Linux

Příkaz Bash počkat

Příkaz Bash počkat

Počkejte je příkaz, který čeká na dokončení zadaných úloh a vrací stav ukončení čekaného příkazu.

Protože Počkejte příkaz ovlivňuje aktuální prostředí pro provádění shellu, je implementován jako vestavěný příkaz ve většině shellů.

V tomto článku prozkoumáme vestavěný Bash Počkejte příkaz.

Bash Počkejte Příkaz #

Obecná syntaxe souboru Počkejte vestavěný má následující podobu:

počkejte [možnosti] ID 

ID je ID procesu nebo úlohy. Jestli ne ID je zadán, příkaz čeká, dokud nebudou dokončeny všechny podřízené úlohy na pozadí.

The Počkejte příkaz vrátí stav ukončení posledního čekaného příkazu.

Například čekat na proces na pozadí s PID 7654, byste použili:

počkejte 7654

Pokud je zadáno více procesů, příkaz čeká na dokončení všech procesů.

Úlohy se zadávají pomocí specifikace úlohy („jobspec“), což je způsob, jak odkazovat na procesy, které tvoří úlohu. Specifikace úlohy začíná symbolem procenta následovaným číslem úlohy (% n). Zde je příklad:

Spusťte příkaz na pozadí:

rsync -a / home / tmp / home &

ID úlohy shellu (v závorkách) a ID procesu se zobrazí na vašem terminálu:

[2] 54377 

Chcete-li počkat na úlohu, spusťte Počkejte příkaz následovaný specifikací úlohy:

počkejte% 2

Při vyvolání pomocí -n Možnost čeká na dokončení pouze jedné úlohy z daných pidů nebo specifikací úloh a vrátí její stav ukončení. Pokud nejsou poskytnuty žádné argumenty, počkejte -n čeká na dokončení jakékoli úlohy na pozadí a vrátí stav ukončení úlohy.

počkat -n 45432 54346 76573

Ve výše uvedeném příkladu, počkejte -n vytiskne pouze návratový stav úlohy, která skončí jako první; nezobrazuje PID úlohy. Chcete-li získat pid úlohy nebo specifikaci úloh, pro které je vrácen stav ukončení, použijte -p možnost jej přiřadit k proměnné:

počkat -p job_id -n 45432 54346 76573

-p možnost byla představena v Bash 5.1. Pokud používáte starší verzi Bash, zobrazí se chyba „neplatná volba“.

The -F volba říká Počkejte čekat, až se každý pid nebo jobpec skutečně ukončí před vrácením kódu ukončení, místo aby se vrátil při změně stavu úlohy. Tato možnost je platná, pouze pokud je povolena kontrola úlohy. Ve výchozím nastavení je řízení úlohy povoleno pouze pro interaktivní výzvy.

Příklady #

Počkejte se obvykle používá ve skriptech prostředí, které vytvářejí podřízené procesy, které se spouštějí paralelně.

Pro ilustraci fungování příkazu vytvořte následující skript:

#!/ bin / bash sleep 30 & process_id = $! echo "PID: $ process_id" počkat $ process_id echo "Ukončit stav: $?" 

Vysvětlíme kód po řádku:

  1. První řádek se nazývá shebang a říká operačnímu systému, který tlumočník má použít k analýze zbytku souboru.
  2. Používáme spát příkaz k emulaci časově náročného procesu na pozadí.
  3. $! je interní proměnná Bash, která ukládá PID poslední spuštěné úlohy na pozadí. V tomto příkladu je to PID z spát příkaz. Ukládáme PID do proměnné (process_id).
  4. Vytiskne číslo PID.
  5. PID je předán do Počkejte příkaz, který čeká na spát příkaz je dokončen.
  6. Vytiskne stav ukončení Počkejte příkaz. $? je interní proměnná Bash, která udržuje stav ukončení posledního provedeného příkazu.

Pokud spustíte skript, vytiskne se něco takového:

PID: 36353 Stav ukončení: 0 

Zde je příklad použití -n volba:

#!/ bin / bash spánek 3 & spánek 30 & spánek 5 & čekání -n echo "První úloha dokončena."počkat echo" Všechny úlohy dokončeny." 

Když je skript spuštěn, zobrazí se 3 procesy na pozadí. počkejte -n čeká, až je dokončena první úloha a je vytištěn příkaz echo. Počkejte čeká na dokončení všech podřízených úloh na pozadí.

první úloha dokončena všechny úlohy dokončeny 

Poslední příklad vysvětluje -F volba. Otevřete terminál a spusťte:

spát 3600 a
[1] 46671 

Počkejte na proces:

počkej 46671

Otevřete jiný terminál a zastavte proces pomocí zabít příkaz:

zabít -STOP 46671

Po změně stavu procesu se zobrazí Počkejte příkaz dokončí a vrátí kód ukončení procesu.

Nyní opakujte stejné kroky, ale tentokrát použijte počkat -f $ pid:

spát 3600 apočkat -f 46671

Zastavte proces z druhého terminálu:

zabít -STOP 46671

Tentokrát Počkejte příkaz nebude dokončen. Bude to trvat až do spát proces končí.

Závěr #

The Počkejte příkaz čeká na dokončení zadaných úloh a vrátí kód ukončení úlohy.

Máte-li jakékoli dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.

Jak používat Xdotool ke stimulaci kliknutí myší a klávesových zkratek v systému Linux
Xdotool je bezplatný a otevřený nástroj příkazového řádku pro simulaci kliknutí myší a stisknutí kláves. Tento článek se bude věnovat krátkému průvodc...
Top 5 ergonomických produktů pro počítačové myši pro Linux
Způsobuje dlouhodobé používání počítače bolest zápěstí nebo prstů? Trpíte ztuhlými klouby a neustále si musíte třást ruce? Cítíte pálivou bolest pokaž...
Jak změnit nastavení myši a touchpadu pomocí Xinput v Linuxu
Většina linuxových distribucí je ve výchozím nastavení dodávána s knihovnou „libinput“ pro zpracování vstupních událostí v systému. Může zpracovávat v...