Linux

Bash wait Command

Bash wait Command

várjon olyan parancs, amely megvárja az adott feladatok befejezését, és visszaadja a várt parancs kilépési állapotát.

Mivel a várjon parancs hatással van az aktuális shell végrehajtási környezetre, beépített parancsként valósul meg a legtöbb shellben.

Ebben a cikkben a Bash beépített változatát tárjuk fel várjon parancs.

Bash várjon Parancs #

A. Általános szintaxisa várjon A beépített formátum a következő:

várjon [opciók] azonosítót 

ID a folyamat vagy a munka azonosítója. Ha nem ID meg van adva, a parancs megvárja, amíg az összes gyermek háttérfeladata elkészül.

A várjon A parancs visszaadja az utoljára várt parancs kilépési állapotát.

Például várni egy háttérfolyamatot PID-vel 7654, használná:

várjon 7654

Több folyamat megadásakor a parancs megvárja az összes folyamat befejezését.

A munkákat a jobspecifikáció („jobspec”) segítségével adják meg, amellyel hivatkozhatunk a munkát alkotó folyamatokra. A munkakör egy százalékos szimbólummal kezdődik, amelyet a job száma követ (% n). Íme egy példa:

Futtasson egy parancsot a háttérben:

rsync -a / home / tmp / home &

A shell job (zárójelekkel körülvéve) és a folyamat azonosítója megjelenik a terminálon:

[2] 54377 

A munka megvárásához futtassa a várjon parancs, amelyet a munkaköri specifikáció követ:

várjon% 2

Amikor a -n opció esetén a parancs csak az adott pids vagy jobspecs egyetlen feladatának befejezését várja, és visszaadja a kilépési állapotát. Ha nem adnak meg érveket, várj -n várja, hogy bármely háttérmunka befejeződjön és visszatérjen a jobból való kilépés állapotához.

várjon -n 45432 54346 76573

A fenti példában, várj -n csak az előbb kilépő munka visszatérési állapotát nyomtatja ki; nem mutatja a munka PID-jét. Ha meg szeretné szerezni azt a job pid vagy jobspec-et, amelyre a kilépési állapot visszatér, használja a -o opció hozzárendelni egy változóhoz:

várjon -p job_id -n 45432 54346 76573

-o opciót bevezették a Bash 5-be.1. Ha régebbi Bash verziót használ, akkor egy „érvénytelen opció” hibát kap.

A -f opció megmondja várjon várni, amíg minden pid vagy jobspec ténylegesen megszűnik, mielőtt visszaküldené a kilépési kódot, ahelyett, hogy visszatérne, amikor a job állapota megváltozik. Ez az opció csak akkor érvényes, ha a jobvezérlés engedélyezve van. Alapértelmezés szerint a jobvezérlés csak interaktív felszólítások esetén engedélyezett.

Példák #

várjon általában a párhuzamosan végrehajtott gyermekfolyamatokat létrehozó shell szkriptekben használják.

A parancs működésének bemutatásához hozza létre a következő parancsfájlt:

#!/ bin / bash sleep 30 & process_id = $! echo "PID: $ process_id" várjon $ process_id echo "Kilépés állapota: $?" 

Magyarázzuk el a kódot soronként:

  1. Az első sor neve shebang, és megmondja az operációs rendszernek, hogy melyik tolmácsot használja a fájl többi elemzéséhez.
  2. A alvás parancs egy időigényes háttérfolyamat utánzásához.
  3. $! egy belső Bash változó, amely az utolsó futtatott job PID-jét tárolja a háttérben. Ebben a példában ez a alvás parancs. A PID-t egy változóban tároljuk (process_id).
  4. Kiírja a PID számot.
  5. A PID továbbításra kerül a várjon parancs, amely megvárja a alvás parancs befejeződik.
  6. Kiírja a várjon parancs. $? egy belső Bash változó, amely az utoljára végrehajtott parancs kilépési állapotát tartja.

Ha futtatja a szkriptet, akkor valami ilyesmit nyomtat:

PID: 36353 Kilépés állapota: 0 

Itt egy példa a -n választási lehetőség:

#!/ bin / bash sleep 3 & sleep 30 & sleep 5 & wait -n echo "Az első munka befejezve."várj visszhangot" Minden munka befejeződött." 

A parancsfájl végrehajtása után 3 háttérfolyamat keletkezik. várj -n megvárja, amíg az első feladat elkészül, és az echo utasítás kinyomtatásra kerül. várjon várja az összes gyermek háttérmunkájának befejezését.

az első munka befejezte az összes befejezett munkát 

Az utolsó példa elmagyarázza a -f választási lehetőség. Nyissa meg a terminált és futtassa:

alvás 3600 &
[1] 46671 

Várja meg a folyamatot:

várjon 46671

Nyisson meg egy másik terminált, és állítsa le a folyamatot a megöl parancs:

kill -STOP 46671

A folyamat állapotának megváltoztatása után a várjon parancs befejezi és visszaadja a folyamat kilépési kódját.

Most ismételje meg ugyanazokat a lépéseket, de ezúttal használja várj -f $ pid:

alvás 3600 &várj -f 46671

Állítsa le a folyamatot a másik terminálról:

kill -STOP 46671

Ezúttal a várjon parancs nem fejeződik be. Addig fog működni alvás a folyamat befejeződik.

Következtetés

A várjon A parancs megvárja a megadott feladatok befejezését, és visszaadja a job kilépési kódját.

Ha bármilyen kérdése vagy visszajelzése van, nyugodtan írjon megjegyzést.

A legjobb 10 játék az Ubuntuban
A Windows platform a játékok egyik domináns platformja volt, mivel a játékokat hatalmas százalékban fejlesztik ma a natív Windows támogatására. Kihívh...
5 legjobb arcade játék Linuxhoz
Manapság a számítógépek komoly gépek, amelyeket játékra használnak. Ha nem sikerül megszerezni az új magas pontszámot, akkor tudni fogja, mire gondolo...
Csata a Wesnothért 1.13.6 Megjelent a fejlesztés
Csata a Wesnothért 1.13.A múlt hónapban megjelent 6 a hatodik fejlesztési kiadás az 1-ben.13.x sorozat, és számos fejlesztést hajt végre, nevezetesen ...