GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Wait v Linuxu vysvětlen s praktickými příklady

Příkaz wait je něco, co je součástí Linuxu, takže jej můžete najít ve všech distribucích Linuxu. Než se proces zastaví, čeká na dokončení. Když zahrnete ID procesu nebo úlohy, měli byste použít příkaz wait. Jednoduše řečeno, příkazy čekání obsahující ID budou i nadále čekat, dokud proces neskončí a nevrátí se do stavu ukončení. Pokud tedy chcete také použít příkaz wait, doporučujeme vám důkladně si přečíst tento článek.

Co je to příkaz Wait?

Příkaz čekání v Linuxu se ukazuje jako cenný a snadný proces, když mluvíme o řízení pracovního postupu automatizace. Navíc vám pomůže správně nastavit tok, aby automatizace probíhala hladce. Například pomocí příkazu wait musíte zajistit, že aktuální modul dokončí provádění dříve, než začne pracovat další.

Tento příkaz pečlivě sleduje předchozí proces. Po dokončení předchozího procesu bude příkazu odeslán stav. Pokud tedy čekáte na dokončení procesu s ID 25351, příkaz wait odešle po dokončení stav ukončení. Jeho návratový stav najdete v jeho zpětné zprávě. Zde je obecná syntaxe příkazu wait: 

wait [options] ID

ID(PID) –> Zvolíte-li tuto možnost, ID procesu (čekejte na PID) počká, dokud nebude nástroj ukončen. PID procesu můžete najít pomocí následujícího příkazu: 

pidof <process name>

Například chceme najít PID Firefoxu a poté v terminálu provedeme níže uvedený příkaz:

Praktické příklady příkazu Wait v Linuxu

--

Níže jsou uvedeny některé příklady příkazu wait, které vám pomohou lépe mu porozumět. Použili jsme různé scénáře a podle toho vytvořili skripty, takže se na ně pojďme podívat:

1. Čekej příkaz s více procesy

Zde v tomto příkladu určíme fungování příkazu wait s mnoha procesy. Navrhneme skript, kde můžeme pokračovat ve spuštění dvou příkazů a pak čekat na jejich provedení. Vytvořili jsme bash skript „ubuntupit.sh“ s následujícími informacemi: 

#! /bin /bash

echo "wait vlc" &

process_id=$!

echo "wait firefox" &

wait $process_id

echo process 1 ended as $?

echo process 2 ended as $?

Po vytvoření výše uvedeného skriptu jsme v terminálu provedli níže uvedený příkaz:

bash ubuntupit.sh

Můžeme také použít příkaz wait ve skriptech shellu, které se používají pro spawnování podřízeného procesu. Zde je tedy jednoduchý skript: 

#! /bin /bash

vlc &

process_id=$!

echo "PID: $process_id"

wait $process_id

echo "Exit Details: $?"

Ve výše uvedeném příkazu:

  • První řádek obsahuje shebang a druhý řádek obsahuje vlc &pro použití příkazu wait. 
  • $! funguje jako interní bash proměnná pro uložení PID posledního procesu, který běží na pozadí.
  • PID je předáno danému příkazu wait na dalším řádku, který počká, dokud se přehrávač vlc nezavře.
  • Na konci systém vytiskne podrobnosti o ukončení příkazu wait. 

Nyní spusťte tento skript v terminálu:

Můžeme také použít volbu -n ve skriptu a získat jiný výsledek. Zde je skript „Ubuntupit2.sh“ skládající se z volby -n:

#! /bin /bash

vlc

firefox

wait -n

echo "First process ended"

wait

echo "All processes ended"

Volba -n ve výše uvedeném skriptu zpozdí tisk příkazu echo, dokud není dokončen první proces. Příkaz čekání čeká na dokončení všech procesů na pozadí.

2. Zabijte proces pomocí příkazu Wait

Pokud jde o druhý příklad týkající se příkazu wait, spustíme skript s názvem ubuntupit3.sh pro ukončení procesu a poté spustíme příkaz wait.

#! /bin/bash
echo "Kill a Process"
vlc &
process_id=$!
kill $process_id
wait $process_id
echo $process_id is ended successfully.

Výstup obdržíte po spuštění skriptu:

Zde vidíte, že stav ukončení ukazuje, zda byl proces ukončen. Tento příklad ukazuje, jak se stav ukončení vrací odlišně na základě výsledku procesu.

3. Kontrola hodnoty stavu ukončení

V tomto příkladu můžete vidět, že funkce kontrola funkce () vyžaduje dva argumenty; pojmenujme náš skript jako ubuntupit4.sh. V tomto skriptu používáme k demonstraci příkladu příkaz sleep. Zde definujeme následující funkci:

#! /bin/bash

function check()

{

echo "Execute sleep for $1 seconds"

sleep $1

exit $2

}

check $1 $2 &

b=$!

echo "System is checking the status of the process"

wait $b && echo Ended Successfully || echo Not Ended Successfully

V této funkci nejprve odrážíme délku prvního procesu. Konkrétní informace pak použijeme k uspání a ukončení procesu. Bereme v úvahu následující vstup:

check $1 $2 &

b=$!

echo "System is checking the status of the process"

wait $b && echo Ended Successfully || echo Not Ended Successfully

Poté, co uživatel zadá hodnotu, je k výstupu stavu použit příkaz wait. Zde jsme jako příklad použili 6,5 a 6,0:

Konečně, statistiky

Výše uvedený článek obsahuje všechny informace o příkazu wait, jeho použití v Linuxu a funkční příklady. Viděli jste, jak jej můžete dobře využít v automatizačních pracovních postupech. Vše, co je v článku zmíněno, se čte adekvátně, od použitého příkazu až po jeho další podrobnosti, a nepostrádá žádný bod.


Linux
  1. Příkaz vypnutí Linuxu s příklady

  2. Příkaz Linux Traceroute, vysvětlený s příklady

  3. JQ Command v Linuxu s příklady

  1. wc Linux Command s příklady

  2. Linux cut Command Vysvětlení pomocí 6 příkladů

  3. Linux ip příkaz s příklady

  1. Příkaz Linux ldd vysvětlený s příklady

  2. 15 Příkaz Linux ps s příklady

  3. Linux dělá příkaz vysvětlený s příklady