Linux

Bash čakať na príkaz

Bash čakať na príkaz

počkaj je príkaz, ktorý čaká na dokončenie zadaných úloh a vráti stav ukončenia čakaného príkazu.

Keďže počkaj príkaz ovplyvňuje súčasné prostredie vykonávania shellu, je implementovaný ako vstavaný príkaz vo väčšine škrupín.

V tomto článku preskúmame zabudovanú technológiu Bash počkaj príkaz.

Bash počkaj Príkaz #

Všeobecná syntax súboru počkaj vstavaný má nasledujúcu formu:

počkajte [možnosti] ID 

ID je ID procesu alebo úlohy. Ak nie ID je zadané, príkaz počká, kým sa nedokončia všetky podradené úlohy na pozadí.

The počkaj príkaz vráti stav ukončenia posledného čakaného príkazu.

Napríklad čakať na proces na pozadí s PID 7654, použili by ste:

počkaj 7654

Keď je zadaných viac procesov, príkaz čaká na dokončenie všetkých procesov.

Úlohy sa špecifikujú pomocou špecifikácie úlohy („jobspec“), čo je spôsob, ako odkazovať na procesy, ktoré tvoria úlohu. Úloha sa začína symbolom percenta, za ktorým nasleduje číslo úlohy (% n). Tu je príklad:

Spustite príkaz na pozadí:

rsync -a / home / tmp / home &

ID úlohy shellu (obklopené zátvorkami) a ID procesu sa zobrazia na vašom termináli:

[2] 54377 

Ak chcete počkať na úlohu, spustite počkaj príkaz nasledovaný špecifikáciou úlohy:

čakaj% 2

Pri vyvolaní pomocou -n voľba, príkaz čaká iba na dokončenie jednej úlohy z daných pidov alebo úloh, a vráti jej stav ukončenia. Ak nie sú poskytnuté žiadne argumenty, počkaj -n čaká na dokončenie akejkoľvek úlohy na pozadí a vráti stav ukončenia úlohy.

počkať -n 45432 54346 76573

V príklade vyššie, počkaj -n vytlačí iba stav vrátenia úlohy, ktorá končí ako prvá; nezobrazuje PID úlohy. Ak chcete získať pid úlohy alebo jobspec, pre ktoré sa vráti stav ukončenia, použite -p možnosť priradiť ho k premennej:

čakať -p job_id -n 45432 54346 76573

-p táto možnosť bola predstavená v Bash 5.1. Ak používate staršiu verziu nástroja Bash, zobrazí sa chyba „neplatná možnosť“.

The -f možnosť hovorí počkaj namiesto vrátenia, keď sa zmení stav úlohy, počkať na skutočné ukončenie každého identifikátora pid alebo úlohy. Táto možnosť je platná, iba ak je povolené riadenie úloh. V predvolenom nastavení je kontrola úlohy povolená iba pre interaktívne výzvy.

Príklady #

počkaj sa zvyčajne používa v shell skriptoch, ktoré vytvárajú podradené procesy, ktoré sa spúšťajú paralelne.

Na ilustráciu fungovania príkazu vytvorte nasledujúci skript:

#!/ bin / bash sleep 30 & process_id = $! echo "PID: $ process_id" čakať $ process_id echo "Výstupný stav: $?„ 

Poďme si vysvetliť kódový riadok po riadku:

  1. Prvý riadok sa volá shebang a informuje operačný systém, ktorý tlmočník má použiť na analýzu zvyšku súboru.
  2. Používame spať príkaz na emuláciu časovo náročného procesu na pozadí.
  3. $! je interná premenná Bash, ktorá ukladá PID poslednej spustenej úlohy na pozadí. V tomto príklade to je PID z spať príkaz. Ukladáme PID do premennej (process_id).
  4. Vytlačí PID číslo.
  5. PID sa odovzdá počkaj príkaz, ktorý čaká na spať príkaz je dokončený.
  6. Vytlačí stav ukončenia počkaj príkaz. $? je interná premenná Bash, ktorá uchováva stav ukončenia posledného vykonaného príkazu.

Ak spustíte skript, vytlačí sa asi takto:

PID: 36353 Výstupný stav: 0 

Tu je príklad použitia -n možnosť:

#!/ bin / bash spánok 3 a spánok 30 a spánok 5 a čakanie -n echo „Prvá úloha dokončená.„wait echo“ Všetky úlohy dokončené.„ 

Keď je skript spustený, zobrazí sa 3 procesy na pozadí. počkaj -n počká, kým sa dokončí prvá úloha a nevytlačí sa príkaz echo. počkaj čaká na dokončenie všetkých detských pozícií v pozadí.

prvá úloha dokončená všetky úlohy dokončené 

Posledný príklad vysvetľuje -f možnosť. Otvorte terminál a spustite:

spať 3600 a
[1] 46671 

Počkajte na postup:

počkaj 46671

Otvorte ďalší terminál a zastavte proces pomocou zabiť príkaz:

zabiť -STOP 46671

Po zmene stavu procesu sa zobrazí počkaj príkaz dokončí a vráti výstupný kód procesu.

Teraz zopakujte rovnaké kroky, ale tentokrát ich použite počkaj -f $ pid:

spať 3600 apočkaj -f 46671

Zastavte proces z druhého terminálu:

zabiť -STOP 46671

Tentokrát počkaj príkaz sa nedokončí. Bude trvať až do spať proces sa ukončí.

Záver #

The počkaj príkaz čaká na dokončenie zadaných úloh a vráti výstupný kód úlohy.

Ak máte akékoľvek otázky alebo spätnú väzbu, neváhajte zanechať komentár.

Ako zmeniť ľavé a pravé tlačidlo myši na počítači so systémom Windows 10
Je úplnou normou, že všetky zariadenia počítačových myší sú ergonomicky navrhnuté pre pravákov. Existujú však dostupné myšacie zariadenia, ktoré sú šp...
Napodobňovanie kliknutí myšou vznášaním sa pomocou myši bez myši vo Windows 10
Používanie myši alebo klávesnice v nesprávnom postoji k nadmernému používaniu môže mať za následok veľa zdravotných problémov vrátane napätia, syndróm...
Pridajte gestá myši do systému Windows 10 pomocou týchto bezplatných nástrojov
V posledných rokoch sa počítače a operačné systémy veľmi vyvinuli. Boli časy, keď používatelia museli prechádzať správcami súborov pomocou príkazov. R...