Linux

Bash pagaidiet komandu

Bash pagaidiet komandu

pagaidi ir komanda, kas gaida, kamēr norādītie darbi ir pabeigti, un atgriež gaidītās komandas izejas statusu.

Kopš pagaidi komanda ietekmē pašreizējo čaulas izpildes vidi, lielākajā daļā čaulu tā tiek ieviesta kā iebūvēta komanda.

Šajā rakstā mēs izpētīsim iebūvēto Bash pagaidi komandu.

Bash pagaidi Komanda #

Vispārējā sintakse pagaidi iebūvētajam ir šāda forma:

pagaidiet [opcijas] ID 

ID ir procesa vai darba ID. Ja nē ID ir norādīta, komanda gaida, līdz tiek pabeigti visi bērna fona darbi.

The pagaidi komanda atgriež pēdējās gaidītās komandas izejas statusu.

Piemēram, lai gaidītu fona procesu ar PID 7654, jūs izmantotu:

pagaidiet 7654

Kad tiek doti vairāki procesi, komanda gaida visu procesu pabeigšanu.

Darbi tiek norādīti, izmantojot darba specifikāciju (“jobspec”), kas ir veids, kā atsaukties uz procesiem, kas veido darbu. Darba sektors sākas ar procentuālo simbolu, kam seko darba numurs (% n). Šeit ir piemērs:

Palaidiet komandu fonā:

rsync -a / home / tmp / home &

Korpusa darba ID (iespiests iekavās) un procesa ID tiks parādīts jūsu terminālā:

[2] 54377 

Lai gaidītu darbu, palaidiet pagaidi komandu, kam seko darba specifikācija:

pagaidiet% 2

Kad tiek izsaukts ar -n opciju, komanda gaida tikai vienu darbu no dotajiem pids vai jobspecs pabeigšanas un atgriež tā izejas statusu. Ja argumenti nav sniegti, pagaidi -n gaida, kamēr jebkurš fona darbs būs pabeigts un atgriezīs izejas statusu.

pagaidiet -n 45432 54346 76573

Iepriekš minētajā piemērā, pagaidi -n izdrukā tikai tā darba atgriešanās statusu, kurš iziet pirmais; tas neparāda darba PID. Ja vēlaties iegūt darba pid vai jobspec, kuram tiek atgriezts izejas statuss, izmantojiet -lpp iespēja to piešķirt mainīgajam:

pagaidiet -p job_id -n 45432 54346 76573

-lpp opcija tika ieviesta Bash 5.1. Ja izmantojat vecāku Bash versiju, tiks parādīta kļūda “nederīga opcija”.

The -f opcija stāsta pagaidi gaidīt, kamēr katrs pids vai jobspec faktiski beigsies, pirms atgriezt izejas kodu, nevis atgriezties, kad tiek mainīts darba statuss. Šī opcija ir derīga tikai tad, ja ir iespējota darba kontrole. Pēc noklusējuma darba kontrole ir iespējota tikai interaktīvām uzvednēm.

Piemēri #

pagaidi parasti tiek izmantots čaulas skriptos, kas rada bērnu procesus, kas tiek izpildīti paralēli.

Lai ilustrētu komandas darbību, izveidojiet šādu skriptu:

#!/ bin / bash sleep 30 & process_id = $! echo "PID: $ process_id" pagaidiet $ process_id echo "Izejas statuss: $?" 

Paskaidrosim kodu pa rindām:

  1. Pirmo rindu sauc par shebang un operētājsistēmai tiek norādīts, kurš tulks jāizmanto, lai parsētu atlikušo failu.
  2. Mēs izmantojam Gulēt komanda atdarināt laikietilpīgu fona procesu.
  3. $! ir iekšējs Bash mainīgais, kas fonā saglabā pēdējās palaistās darba PID. Šajā piemērā tas ir Gulēt komandu. Mēs glabājam PID mainīgajā (process_id).
  4. Izdrukā PID numuru.
  5. PID tiek nodots pagaidi komanda, kas gaida līdz Gulēt komanda tiek pabeigta.
  6. Izdrukā izejas statusu pagaidi komandu. $? ir iekšējs Bash mainīgais, kuram ir pēdējās izpildītās komandas izejas statuss.

Ja palaidīsit skriptu, tas izdrukās apmēram šādi:

PID: 36353 Izejas statuss: 0 

Šeit piemērs, izmantojot -n iespēja:

#!/ bin / bash sleep 3 & sleep 30 & sleep 5 & wait -n echo "Pirmais darbs pabeigts."pagaidiet atbalss" Visi darbi ir pabeigti." 

Kad skripts tiek izpildīts, tas rada 3 fona procesus. pagaidi -n gaida, kamēr pirmais darbs ir pabeigts, un atbalss paziņojums tiek izdrukāts. pagaidi gaida, kad visi bērna fona darbi būs pabeigti.

pirmais darbs pabeigts, visi pabeigtie darbi 

Pēdējais piemērs izskaidro -f opcija. Atveriet termināli un palaidiet:

gulēt 3600 un
[1] 46671 

Gaidiet procesu:

pagaidiet 46671

Atveriet citu termināli un pārtrauciet procesu ar nogalināt komanda:

nogalināt-STOP 46671

Kad procesa statuss ir mainīts, pagaidi komanda aizpildīs un atgriezīs procesa izejas kodu.

Tagad atkārtojiet tās pašas darbības, bet šoreiz izmantojiet pagaidiet -f $ pid:

gulēt 3600 unpagaidiet -f 46671

Pārtrauciet procesu no otra termināļa:

nogalināt-STOP 46671

Šoreiz pagaidi komanda netiks pabeigta. Tas darbosies līdz plkst Gulēt process tiek pārtraukts.

Secinājums Nr

The pagaidi komanda gaida norādīto darbu pabeigšanu un atgriež darba izejas kodu.

Ja jums ir kādi jautājumi vai atsauksmes, droši atstājiet komentāru.

WinMouse ļauj jums pielāgot un uzlabot peles rādītāja kustību Windows datorā
Ja vēlaties uzlabot peles rādītāja noklusējuma funkcijas, izmantojiet bezmaksas programmatūru WinMouse. Tas pievieno vairāk funkciju, kas palīdzēs jum...
Peles kreisā klikšķa poga nedarbojas operētājsistēmā Windows 10
Ja ar klēpjdatoru vai galddatoru izmantojat īpašu peli, bet nedarbojas peles kreisās klikšķa poga kādu iemeslu dēļ operētājsistēmā Windows 10/8/7 šeit...
Rakstot Windows 10, kursors lec vai pārvietojas nejauši
Ja atklājat, ka peles kursors automātiski, nejauši lec vai pārvietojas pats, rakstot Windows klēpjdatorā vai datorā, daži no šiem ieteikumiem var palī...