Linux

Bash vänta kommando

Bash vänta kommando

vänta är ett kommando som väntar på att de angivna jobben ska slutföras och returnerar utgångsstatusen för det väntade på kommandot.

Sedan vänta kommandot påverkar den nuvarande skalkörningsmiljön, det implementeras som ett inbyggt kommando i de flesta skal.

I den här artikeln kommer vi att utforska Bash-inbyggnaden vänta kommando.

Våldsamt slag vänta Kommando #

Den allmänna syntaxen för vänta inbyggd har följande form:

vänta [alternativ] ID 

ID är process- eller jobb-ID. Om inte ID är angivet, väntar kommandot tills alla underordnade bakgrundsjobb har slutförts.

De vänta kommandot returnerar utgångsstatus för det senast väntade kommandot.

Till exempel att vänta på en bakgrundsprocess med PID 7654, du skulle använda:

vänta 7654

När flera processer ges väntar kommandot på att alla processer ska slutföras.

Jobb specificeras med jobbspecifikationen (“jobspec”), vilket är ett sätt att hänvisa till de processer som utgör jobbet. En jobspec börjar med en procentsymbol följt av jobbnumret (% n). Här är ett exempel:

Kör ett kommando i en bakgrund:

rsync -a / home / tmp / home &

ID för skaljobb (omgiven av parenteser) och process-ID visas på din terminal:

[2] 54377 

För att vänta på jobbet, kör vänta kommando följt av jobbspecifikationen:

vänta% 2

När åberopas med -n Alternativet väntar kommandot bara på att ett enskilt jobb från de angivna pids eller jobspecs ska slutföras och returnerar dess utgångsstatus. Om inga argument tillhandahålls, vänta -n väntar på att ett bakgrundsjobb ska slutföras och returnera statusen för avslutad jobb.

vänta -n 45432 54346 76573

I exemplet ovan, vänta -n skriver bara ut returstatus för jobbet som avslutas först; det visar inte PID för jobbet. Om du vill få jobbet pid eller jobspec som utgångsstatus returneras för, använd -sid möjlighet att tilldela den till en variabel:

vänta -p job_id -n 45432 54346 76573

-sid alternativet introducerades i Bash 5.1. Om du använder en äldre Bash-version får du ett "ogiltigt alternativ" -fel.

De -f alternativet berättar vänta att vänta på att varje pid eller jobspec faktiskt avslutas innan du returnerar sin utgångskod, snarare än att återvända när jobbstatusen ändras. Det här alternativet är endast giltigt när jobbkontroll är aktiverad. Som standard är jobbkontroll endast aktiverad för interaktiva uppmaningar.

Exempel #

vänta används vanligtvis i skalskript som ger barnprocesser som körs parallellt.

Skapa följande skript för att illustrera hur kommandot fungerar:

#!/ bin / bash sleep 30 & process_id = $! eko "PID: $ process_id" vänta $ process_id echo "Avslutningsstatus: $?" 

Låt oss förklara koden rad för rad:

  1. Den första raden heter shebang och berättar för operativsystemet vilken tolk som ska användas för att analysera resten av filen.
  2. Vi använder sova kommando för att efterlikna en tidskrävande bakgrundsprocess.
  3. $! är en intern Bash-variabel som lagrar PID för det senaste jobbet som körs i bakgrunden. I det här exemplet är det PID för sova kommando. Vi lagrar PID i en variabel (process_id).
  4. Skriver ut PID-numret.
  5. PID skickas till vänta kommando som väntar tills sova kommandot slutförts.
  6. Skriver ut utgångsstatus för vänta kommando. $? är en intern Bash-variabel som har utgångsstatus för det senaste kommandot som utfördes.

Om du kör skriptet kommer det att skrivas ut så här:

PID: 36353 Utgångsstatus: 0 

Här ett exempel med hjälp av -n alternativ:

#!/ bin / bash sleep 3 & sleep 30 & sleep 5 & wait -n echo "Första jobbet slutfört."vänta eko" Alla jobb slutförda." 

När skriptet körs, skapas tre bakgrundsprocesser. vänta -n väntar tills det första jobbet är slutfört och ekoutdraget skrivs ut. vänta väntar på att alla barnbakgrundsjobb ska slutföras.

första jobbet slutfört alla jobb avslutade 

Det sista exemplet förklarar -f alternativ. Öppna terminalen och kör:

sova 3600 &
[1] 46671 

Vänta på processen:

vänta 46671

Öppna en annan terminal och stoppa processen med döda kommando:

döda -STOP 46671

När processstatusen har ändrats, kommer vänta kommandot kommer att slutföra och returnera processutgångskoden.

Upprepa nu samma steg, men använd den här gången vänta -f $ pid:

sova 3600 &vänta -f 46671

Stoppa processen från den andra terminalen:

döda -STOP 46671

Den här gången vänta kommandot kommer inte att slutföras. Det kommer att köras tills sova processen avslutas.

Slutsats #

De vänta kommandot väntar på att de angivna jobben ska slutföras och returnerar utgångskoden för jobbet.

Om du har några frågor eller feedback, lämna gärna en kommentar.

Mus Hur man ändrar vänster och höger musknapp på Windows 10 PC
Hur man ändrar vänster och höger musknapp på Windows 10 PC
Det är en hel norm att alla datormusenheter är ergonomiskt utformade för högerhänta användare. Men det finns musenheter tillgängliga som är speciellt ...
Mus Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Att använda en mus eller tangentbord i fel hållning av överdriven användning kan resultera i många hälsoproblem, inklusive stam, karpaltunnelsyndrom o...
Mus Lägg till musgester i Windows 10 med dessa gratisverktyg
Lägg till musgester i Windows 10 med dessa gratisverktyg
Under senare år har datorer och operativsystem utvecklats kraftigt. Det fanns en tid då användare var tvungna att använda kommandon för att navigera g...