GNU/Linux >> Znalost Linux >  >> Ubuntu

Bash wait Příkaz s příklady

Úvod

Bash wait je příkaz Shell, který čeká na dokončení procesů běžících na pozadí a vrací stav ukončení. Na rozdíl od příkazu sleep, který čeká po stanovenou dobu, wait příkaz čeká na dokončení všech nebo konkrétních úloh na pozadí.

Tento výukový program vysvětluje wait syntaxi příkazu a poskytuje příklady kódů bash skriptů.

Předpoklady

  • Přístup k příkazovému řádku/terminálu.
  • Práva správce (sudo).
  • Textový editor, jako je Vim nebo Nano.

syntaxe příkazu bash wait

čekání lze použít různými způsoby příkaz v bash skriptech. Níže uvedená tabulka vysvětluje každý případ použití.

Příkaz Vysvětlení
wait Bez jakýchkoli parametrů bude wait příkaz čeká na dokončení všech procesů na pozadí, než bude pokračovat ve skriptu.
wait <process or job ID> Přidané PID nebo ID úlohy čeká na ukončení konkrétního procesu, než bude pokračovat ve skriptu.
wait -n Čeká na dokončení pouze následujícího procesu na pozadí a vrátí stav ukončení.
wait -f Ukončení programu nejprve čeká na dokončení úlohy na pozadí, než se ukončí.

Příklady příkazů Wait

Při práci s čekáním je potřeba znát tři další parametry ve skriptech bash:

1. Znak ampersand (& ) za příkazem označuje úlohu na pozadí.

2. $! načte PID posledního procesu na pozadí. Při práci s více procesy na pozadí uložte předchozí PID do proměnné.

3. $? vytiskne stav ukončení posledního procesu.

Chcete-li vidět, jak tyto tři parametry spolupracují, otevřete okno terminálu a spusťte:

sleep 10 &
echo $!
echo $?

$! parametr ukládá PID procesu na pozadí, zatímco $? ukládá stav odchodu. Stav ukončení 0 označuje, že příkaz byl úspěšně dokončen.

Příklad čekání jednoho procesu

1. Začněte otevřením terminálu a vytvořte jednoduchý proces na pozadí:

sleep 10 &

2. Potvrďte, že úloha běží na pozadí pomocí:

jobs -l

3. Použijte wait příkaz bez parametrů pro pozastavení do dokončení procesu:

wait

Terminál čeká na dokončení procesu na pozadí.

Po 10 sekundách (kvůli sleep 10 ), konzola vytiskne Hotovo zprávu.

Příklad čekání na bash jednoho procesu

Použijte wait příkaz označující, do kterého bodu se musí proces na pozadí ve skriptu spustit.

1. Například v textovém editoru přidejte následující kód:

#!/bin/bash
echo Background process &
echo First message
echo Second message
wait
echo Third message

Pokud proces na pozadí nedokončí první a druhý proces, wait příkaz vyvolá pauzu, aby počkal na dokončení procesu na pozadí po druhém procesu, než bude pokračovat ke třetímu procesu.

2. Uložte skript jako single_process.sh . V terminálu změňte oprávnění, aby byl skript spustitelný:

sudo chmod +x single_process.sh

3. Spusťte skript pomocí:

./single_process.sh

Proces na pozadí se dokončí kdykoli před wait a skript pokračuje.

Příklad čekání více procesů

1. Otevřete textový editor a přidejte následující skript s více procesy:

#!/bin/bash
sleep 10 &
sleep 15 &
sleep 5 &
echo $(date +%T)
wait 
echo $(date +%T)

Skript vypíše aktuální čas před a po wait příkaz. Bez jakýchkoli parametrů program čeká na dokončení všech procesů.

2. Uložte skript jako test.sh a zavřete soubor. Dále vytvořte spustitelný skript:

sudo chmod +x test.sh

3. Nakonec spusťte program pomocí:

./test.sh

Protože procesy běží na pozadí, jsou všechny tři dokončeny za patnáct sekund.

4. Použijte stejný skript k testování následujících případů použití:

  • Přidejte -n parametr <strong>wait</strong> . Dokončí se pouze nejrychlejší proces a skript skončí za deset sekund.
  • Přidejte ID úlohy, abyste určili, na kterou úlohu má skript čekat. Například wait %1 pauzy pro proces 1 (sleep 10 ) dokončit.

Více procesů bash čekání s příkladem PID

1. Při práci s více procesy použijte k identifikaci procesu PID. Níže uvedený příklad skriptu zobrazuje jediný případ použití:

#!/bin/bash
echo "Process 1 lasts for 2s" && sleep 2 &
PID=$!
echo "Process 2 lasts for 3s" && sleep 3 &
echo "Current time $(date +%T)"
wait $PID
echo "Process 1 ended at time $(date +%T) with exit status $?"
wait $!
echo "Process 2 ended at time $(date +%T) with exit status $?"

2. Uložte skript jako multi_wait.sh . Vytvořte skript spustitelný pomocí:

sudo chmod +x multi_wait.sh

3. Spusťte skript, abyste viděli výstup:

./multi_wait.sh

Dokončení prvního procesu trvá skriptu dvě sekundy (kvůli sleep 2 ) a tři sekundy na dokončení druhého procesu. Tyto dva procesy se provádějí současně a oba jsou dokončeny za tři sekundy.


Ubuntu
  1. Linux Source Command s příklady

  2. Příkaz Nohup s příklady

  3. '&&' vs. '&' s příkazem 'test' v Bash

  1. wc Linux Command s příklady

  2. Bash HereDoc výukový program s příklady

  3. Bash čeká příkaz

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

  2. Příkaz Netcat (nc) s příklady

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