Linux

Bash wait Ukaz

Bash wait Ukaz

počakaj je ukaz, ki čaka, da se določena opravila zaključijo, in vrne status izhoda čakalnega ukaza.

Ker je počakaj ukaz vpliva na trenutno okolje izvajanja lupine in je vgrajen v večino lupin.

V tem članku bomo raziskali vgrajeni Bash počakaj ukaz.

Baš počakaj Ukaz št

Splošna sintaksa počakaj vgrajena ima naslednjo obliko:

počakajte [možnosti] ID 

ID je ID ali ID delovnega mesta. Če ne ID je ukaz počakan, dokler niso dokončana vsa podrejena opravila v ozadju.

The počakaj ukaz vrne stanje izhoda zadnjega čakanega ukaza.

Na primer, počakati na postopek v ozadju s PID 7654, bi uporabili:

počakaj 7654

Ko je podanih več procesov, ukaz čaka, da se vsi procesi zaključijo.

Opravila so določena s specifikacijo opravila (“jobspec”), ki pomeni način sklicevanja na procese, ki sestavljajo opravilo. Poslovna točka se začne s simbolom za odstotek, ki mu sledi številka opravila (% n). Tu je primer:

Zaženite ukaz v ozadju:

rsync -a / home / tmp / home &

ID terminala lupine (obdan z oklepaji) in ID procesa bosta prikazana na vašem terminalu:

[2] 54377 

Če želite počakati na delo, zaženite počakaj ukaz, ki mu sledi specifikacija opravila:

počakaj% 2

Ko se prikliče z -n Možnost čaka, da ukaz čaka samo na eno opravilo iz danih pidov ali opravil in ga vrne v stanje izstopa. Če niso navedeni nobeni argumenti, počakaj -n čaka, da se opravilo v ozadju dokonča in vrne status izhoda iz opravila.

čakanje -n 45432 54346 76573

V zgornjem primeru, počakaj -n natisne samo status vrnitve opravila, ki najprej zapusti; ne prikazuje PID opravila. Če želite dobiti pid opravila ali Jobspec, za katerega je vrnjeno stanje izstopa, uporabite -str možnost dodelitve spremenljivki:

počakajte -p job_id -n 45432 54346 76573

-str možnost je bila uvedena v Bashu 5.1. Če uporabljate starejšo različico Bash, se prikaže napaka »neveljavna možnost«.

The -f možnost pove počakaj počakati, da se vsak pid ali Jobspec dejansko konča, preden vrne svojo izhodno kodo, namesto da se vrne, ko se spremeni status opravila. Ta možnost velja samo, če je omogočen nadzor nad opravili. Privzeto je nadzor nad opravili omogočen samo za interaktivne pozive.

Primeri #

počakaj se običajno uporablja v skriptih lupine, ki ustvarjajo podrejene procese, ki se izvajajo vzporedno.

Za ponazoritev delovanja ukaza ustvarite naslednji skript:

#!/ bin / bash sleep 30 & process_id = $! echo "PID: $ process_id" wait $ process_id echo "Stanje izhoda: $?" 

Razložimo kodo vrstico za vrstico:

  1. Prva vrstica se imenuje shebang in operacijskemu sistemu pove, kateri tolmač naj uporabi za razčlenitev preostale datoteke.
  2. Uporabljamo spanje ukaz za posnemanje zamudnega procesa v ozadju.
  3. $! je notranja spremenljivka Bash, ki v ozadju shrani PID zadnjega opravljenega opravila. V tem primeru je to PID datoteke spanje ukaz. PID shranjujemo v spremenljivko (process_id).
  4. Natisne številko PID.
  5. PID se posreduje počakaj ukaz, ki čaka do spanje ukaz zaključi.
  6. Natisne stanje izhoda počakaj ukaz. $? je notranja spremenljivka Bash, ki vsebuje stanje izhoda zadnjega izvršenega ukaza.

Če zaženete skript, bo natisnil nekaj takega:

PID: 36353 Stanje izhoda: 0 

Tu je primer uporabe -n možnost:

#!/ bin / bash sleep 3 & sleep 30 & sleep 5 & wait -n echo "Prvo opravilo je končano."wait echo" Vsa opravila dokončana." 

Ko se skript izvede, ustvari 3 procese v ozadju. počakaj -n počaka, da se prvo opravilo zaključi in se odtisni odmev. počakaj čaka, da se dokončajo vsa opravila za otroke v ozadju.

prvo opravljeno delo vse opravljene zaposlitve 

Zadnji primer pojasnjuje -f možnost. Odprite terminal in zaženite:

spanje 3600 &
[1] 46671 

Počakajte na postopek:

počakaj 46671

Odprite drug terminal in zaustavite postopek z ubiti ukaz:

ubiti -STOP 46671

Ko se status procesa spremeni, se počakaj ukaz bo dokončal in vrnil izhodno kodo procesa.

Zdaj ponovite iste korake, vendar tokrat uporabite počakaj -f $ pid:

spanje 3600 &počakajte -f 46671

Ustavite postopek z drugega terminala:

ubiti -STOP 46671

Tokrat počakaj ukaz ne bo dokončan. Potekal bo do spanje postopek zaključi.

Zaključek #

The počakaj ukaz čaka, da se navedena opravila dokončajo, in vrne izhodno kodo opravila.

Če imate kakršna koli vprašanja ali povratne informacije, vas prosimo, da pustite komentar.

Kako prenesti in igrati Sid Meier's Civilization VI v Linuxu
Uvod v igro Civilization 6 je sodoben pogled na klasični koncept, uveden v seriji iger Age of Empires. Ideja je bila dokaj preprosta; začeli bi v zelo...
Kako namestiti in igrati Doom v Linuxu
Uvod v Doom Serija Doom je nastala v devetdesetih letih po izidu prvotnega Dooma. Bil je takojšen hit in od takrat naprej je serija iger prejela števi...
Vulkan za uporabnike Linuxa
Z vsako novo generacijo grafičnih kart vidimo, da razvijalci iger premikajo meje grafične zvestobe in se približujejo fotorealizmu. A kljub vsem kredi...