„Linux“

Bash palaukite komandą

Bash palaukite komandą

laukti yra komanda, kuri laukia, kol duoti darbai bus baigti, ir grąžins laukto komandos išėjimo būseną.

Kadangi laukti komanda veikia dabartinę apvalkalo vykdymo aplinką, daugumoje apvalkalų ji įgyvendinama kaip integruota komanda.

Šiame straipsnyje mes ištirsime „Bash“ integruotą laukti komandą.

Bashas laukti Komanda Nr

Bendroji sintaksė laukti įmontuotas yra tokia forma:

palauk [parinkčių] ID 

ID yra proceso arba darbo ID. Jei ne ID yra nurodyta, komanda laukia, kol bus baigti visi vaiko foniniai darbai.

The laukti komanda grąžina paskutinės lauktos komandos išėjimo būseną.

Pavyzdžiui, palaukti foninio proceso su PID 7654, jūs naudotumėte:

palauk 7654

Kai pateikiami keli procesai, komanda laukia, kol visi procesai bus baigti.

Darbai nurodomi naudojant darbo specifikaciją („jobspec“), kuri yra būdas nurodyti procesus, kurie sudaro darbą. Darbo sritis prasideda procentiniu simboliu, po kurio nurodomas darbo numeris (% n). Štai pavyzdys:

Vykdykite komandą fone:

rsync -a / home / tmp / home &

„Shell“ darbo ID (apkabintas skliaustais) ir proceso ID bus rodomi jūsų terminale:

[2] 54377 

Norėdami palaukti darbo, paleiskite laukti komanda, po kurios pateikiama darbo specifikacija:

palauk% 2

Kai iškviečiamas su -n parinktį, komanda laukia tik vienos užduoties iš nurodytų PID arba Jobspecs pabaigos ir grąžina jos išėjimo būseną. Jei nepateikiama jokių argumentų, palauk -n laukia, kol bet kuri foninė užduotis bus baigta ir grąžins išėjimo iš darbo būseną.

palauk -n 45432 54346 76573

Aukščiau pateiktame pavyzdyje, palauk -n atspausdina tik pirmojo darbo grįžimo būseną; tai nerodo darbo PID. Jei norite gauti darbo pid arba jobspec, kuriam grąžinama išėjimo būsena, naudokite -p galimybė priskirti jį kintamajam:

palauk -p job_id -n 45432 54346 76573

-p galimybė buvo įvesta „Bash 5“.1. Jei naudojate senesnę „Bash“ versiją, gausite klaidos klaidą „netinkama parinktis“.

The -f variantas pasako laukti palaukti, kol kiekvienas „pid“ arba „jobspec“ iš tikrųjų bus nutrauktas, prieš grąžinant išėjimo kodą, o ne grįžti pakeitus darbo būseną. Ši parinktis galioja tik tada, kai įjungtas darbo valdymas. Pagal numatytuosius nustatymus darbo valdymas įgalinamas tik interaktyviems raginimams.

# Pavyzdžiai

laukti paprastai naudojamas apvalkalo scenarijuose, kurie pagimdo vaiko procesus, kurie vykdomi lygiagrečiai.

Norėdami iliustruoti komandos veikimą, sukurkite šį scenarijų:

#!/ bin / bash sleep 30 & process_id = $! echo "PID: $ process_id" palaukite $ process_id echo "Išėjimo būsena: $?" 

Paaiškinkime kodą eilutėmis:

  1. Pirmoji eilutė vadinama „shebang“ ir operacinei sistemai nurodo, kurį vertėją naudoti likusiai rinkmenai išanalizuoti.
  2. Mes naudojame miegoti komanda imituoti daug laiko reikalaujantį foninį procesą.
  3. $! yra vidinis „Bash“ kintamasis, kuris fone saugo paskutinio paleisto darbo PID. Šiame pavyzdyje tai yra miegoti komandą. PID saugome kintamajame (proceso_id).
  4. Spausdina PID numerį.
  5. PID perduodamas laukti komanda, kuri laukia, kol miegoti komanda baigiama.
  6. Spausdina išėjimo būseną laukti komandą. $? yra vidinis „Bash“ kintamasis, turintis paskutinės įvykdytos komandos išėjimo būseną.

Jei paleisite scenarijų, jis atspausdins maždaug taip:

PID: 36353 Išėjimo būsena: 0 

Čia pavyzdys naudojant -n variantas:

#!/ bin / bash sleep 3 & sleep 30 & sleep 5 & wait -n echo "Pirmas darbas baigtas.„palaukite aido“ Visi darbai baigti." 

Vykdant scenarijų, jis pagimdo 3 foninius procesus. palauk -n laukia, kol bus baigtas pirmasis darbas ir atspausdintas aido pareiškimas. laukti laukia, kol bus baigti visi vaiko foniniai darbai.

pirmasis darbas baigtas visos baigtos darbo vietos 

Paskutinis pavyzdys paaiškina -f variantą. Atidarykite terminalą ir paleiskite:

miegoti 3600 ir
[1] 46671 

Palaukite proceso:

palaukite 46671

Atidarykite kitą terminalą ir sustabdykite procesą naudodami nužudyti komanda:

nužudyti -STOP 46671

Pakeitus proceso būseną, laukti komanda užbaigs ir grąžins proceso išėjimo kodą.

Dabar pakartokite tuos pačius veiksmus, bet šį kartą naudokite palauk -f $ pid:

miegoti 3600 irpalauk -f 46671

Sustabdykite procesą iš kito terminalo:

nužudyti -STOP 46671

Šį kartą laukti komanda nebus baigta. Jis veiks iki miegoti procesas baigiasi.

Išvada Nr

The laukti komanda laukia, kol bus baigtos nurodytos užduotys, ir grąžins darbo išėjimo kodą.

Jei turite klausimų ar atsiliepimų, palikite komentarą.

Valdykite ir valdykite pelės judėjimą tarp kelių „Windows 10“ monitorių
„Dual Display Mouse Manager“ leidžia jums valdyti ir konfigūruoti pelės judėjimą tarp kelių monitorių, sulėtinant jo judėjimą šalia sienos. „Windows 1...
„WinMouse“ leidžia tinkinti ir pagerinti pelės žymeklio judėjimą „Windows“ kompiuteryje
Jei norite pagerinti numatytąsias pelės žymiklio funkcijas, naudokite nemokamą programinę įrangą „WinMouse“. Tai prideda daugiau funkcijų, kurios padė...
Pelės kairiuoju pelės mygtuku mygtukas neveikia „Windows 10“
Jei naudojate specialią pelę su savo nešiojamuoju kompiuteriu arba staliniu kompiuteriu, tačiau neveikia pelės kairysis mygtukas dėl tam tikrų priežas...