Linux

Bash ootama käsk

Bash ootama käsk

oota on käsk, mis ootab antud tööde lõpetamist ja tagastab oodatud käsu väljumise oleku.

Kuna oota käsk mõjutab praegust kestade käivitamise keskkonda, seda rakendatakse enamikus shellides sisseehitatud käsuna.

Selles artiklis uurime sisseehitatud Bashi oota käsk.

Bash oota Käsk nr

Üldine süntaks oota sisseehitatud kujul on järgmine:

oota [valikud] ID 

ID on protsess või töö ID. Kui ei ID on määratud, ootab käsk, kuni kõik lapse tausttööd on lõpetatud.

The oota käsk tagastab viimati oodatud käsu väljumise oleku.

Näiteks oodata PID-ga taustaprotsessi 7654, sa kasutaksid:

oota 7654

Kui antakse mitu protsessi, ootab käsk kõigi protsesside lõpuleviimist.

Töökohad määratakse töö spetsifikatsiooni („jobspec“) abil, mis on viis viidata töö moodustavatele protsessidele. Tööala algab protsendi sümboliga, millele järgneb töö number (% n). Siin on näide:

Käivitage taustal käsk:

rsync -a / home / tmp / home &

Shell-töö ID (sulgudes ümbritsetud) ja protsessi ID kuvatakse teie terminalis:

[2] 54377 

Töö ootamiseks käivitage oota käsk, millele järgneb töö spetsifikatsioon:

oota% 2

Kui seda kutsutakse koos -n suvand, ootab käsk antud pids-ist või jobspecamist ainult ühe töö lõpetamist ja tagastab selle väljumisoleku. Kui argumente ei esitata, oota-n ootab, kuni mis tahes tausttöö on lõpetatud ja tagastatakse töölt lahkumise olek.

oota -n 45432 54346 76573

Ülaltoodud näites, oota-n prindib ainult selle töö tagastamise oleku, mis väljub esimesena; see ei näita töö PID-d. Kui soovite hankida töö pid või töökoha, mille väljundolek tagastatakse, kasutage nuppu -lk võimalus määrata see muutujale:

oota -p job_id -n 45432 54346 76573

-lk võimalus võeti kasutusele Bash 5-s.1. Kui kasutate vanemat Bashi versiooni, kuvatakse tõrge „kehtetu valik”.

The -f variant ütleb oota enne väljumiskoodi tagastamist ootama, kuni iga pid või töökoht lõpeb, selle asemel, et naasta, kui töö olekut muudetakse. See valik kehtib ainult siis, kui töö juhtimine on lubatud. Vaikimisi on töö juhtimine lubatud ainult interaktiivsete viipade puhul.

Näited #

oota kasutatakse tavaliselt shelliskriptides, mis sünnitavad paralleelselt toimuvaid lapseprotsesse.

Käsu toimimise illustreerimiseks looge järgmine skript:

#!/ bin / bash sleep 30 & process_id = $! echo "PID: $ process_id" oodake $ process_id echo "Väljumise olek: $?" 

Selgitame koodi rea kaupa:

  1. Esimest rida nimetatakse shebangiks ja see ütleb operatsioonisüsteemile, millist tõlki kasutada ülejäänud faili sõelumiseks.
  2. Me kasutame magama käsk jäljendada aeganõudvat taustaprotsessi.
  3. $! on sisemine muutuja Bash, mis salvestab taustal viimase käivitatud töö PID. Selles näites on see magama käsk. PID salvestatakse muutujasse (process_id).
  4. Prindib PID-numbri.
  5. PID edastatakse oota käsk, mis ootab kuni magama käsk on lõpule viidud.
  6. Prindib oota käsk. $? on sisemine muutuja Bash, mis hoiab viimati täidetud käsu väljumisolekut.

Kui käivitate skripti, prindib see midagi sellist:

PID: 36353 Väljumise staatus: 0 

Siin näide, kasutades -n võimalus:

#!/ bin / bash sleep 3 & sleep 30 & sleep 5 & wait -n kaja "Esimene töö on lõpetatud."oota kaja" Kõik tööd on lõpetatud." 

Kui skript on täidetud, sünnitab see 3 taustaprotsessi. oota-n ootab, kuni esimene töö on lõpule jõudnud ja kajaavaldus prinditakse. oota ootab kõigi lapse tausttööde lõpetamist.

esimene töökoht lõpetatud kõik tööd lõpetatud 

Viimane näide selgitab -f valik. Avage terminal ja käivitage:

magada 3600 &
[1] 46671 

Oodake protsessi:

oota 46671

Avage teine ​​terminal ja peatage protsess nupuga tapma käsk:

tappa -STOP 46671

Kui protsessi olek on muudetud, kuvatakse oota käsk täidab ja tagastab protsessi väljumise koodi.

Korrake nüüd samu samme, kuid seekord kasutage oota -f $ pid:

magada 3600 &oota -f 46671

Peatage protsess teisest terminalist:

tappa -STOP 46671

Seekord oota käsk ei lõpule. See kestab kuni magama protsess lõpeb.

Järeldus #

The oota command ootab määratud tööde lõpetamist ja tagastab töö väljumiskoodi.

Kui teil on küsimusi või tagasisidet, jätke julgelt kommentaar.

Kommertsmängumootorite avatud lähtekoodiga sadamad
Tasuta, avatud lähtekoodiga ja platvormidevaheliste mängumootorite puhkusereise saab kasutada nii vanade kui ka mõnede üsna hiljutiste mängude pealkir...
Parimad Linuxi käsurea mängud
Käsurida pole Linuxi kasutamisel lihtsalt teie suurim liitlane - see võib olla ka meelelahutusallikas, sest saate seda kasutada paljude lõbusate mängu...
Parimad Linuxi mängupuldi kaardistamise rakendused
Kui teile meeldib mängida Linuxis mänge tavalise klaviatuuri ja hiire sisestussüsteemi asemel mängupuldiga, on teie jaoks mõned kasulikud rakendused. ...