GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Wait in Linux spiegato con esempi

L'attesa il comando è integrato in Linux; quindi puoi trovarlo in qualsiasi distribuzione Linux. Viene utilizzato per attendere prima del completamento di un processo in esecuzione. Per farlo funzionare, devi usarlo con un ID lavoro o un ID processo.

In poche parole, l'attesa comando con un determinato ID processo o ID processo attenderà il completamento del processo e restituirà lo stato di terminazione.

Aspetta comando è utile quando si tratta di gestire un flusso di lavoro di automazione. Può aiutarti a impostare correttamente il flusso in modo che l'automazione abbia successo. Ad esempio, il processo di automazione richiede che un particolare modulo termini l'esecuzione prima che il modulo successivo possa avere effetto. Il comando wait ti consente di farlo.

Funzionamento dell'attesa comando

Il comando monitorerà il processo precedente. Una volta che il processo precedente restituisce uno stato, invierà uno stato di uscita. Quindi, se stai aspettando il completamento di un processo con ID 25351, il comando wait attenderà il suo completamento prima di inviare lo stato di uscita. Il messaggio di ritorno conterrà lo stato di uscita del processo.

Sintassi generale:

wait [Processid] [jobid]
  • ID processo –> Se si utilizza l'ID processo (attendere PID), attenderà la chiusura dell'utilità
  • ID lavoro –> In questo caso, attenderà il processo in background che hai selezionato. Funziona solo nell'ambiente di esecuzione della shell corrente.

Il comando di uscita è impostato per superare un valore maggiore di 128 se il processo si interrompe bruscamente. Quindi, se vedi un importo superiore a 128, significa che il processo non ha funzionato come previsto.

Lo stato di uscita di successo è impostato su 0. Succede solo se il processo termina correttamente senza che nessun processo figlio sia in esecuzione nella shell corrente. Tuttavia, se non ricevi 0 come stato di uscita, significa che si è verificato un errore. Viene notificato con un valore compreso tra 1 e 126. Inoltre, se ottieni uno stato di uscita di 127, significa che l'ID del processo è sconosciuto.

Esempi pratici

Per avere una migliore comprensione, esaminiamo alcuni degli esempi pratici riportati di seguito.

Aspetta comando con più processi

In questo esempio, vedremo come attendo comando funziona con vari processi. Creeremo uno script in cui eseguiremo due comandi e poi li attendiamo.

Chiamiamo lo script multiple.sh . Di seguito è riportato il codice.

#!/bin/bash
echo "testing the wait command instance 1" &
process_id=$!
echo "testing the wait command instance 2" &
wait $process_id
echo Job 1 is completed and exited with status $?
echo Job 2 is completed and existed with status $?

Quanto sopra è anche un esempio di uno script con il comando wait. Inoltre, restituisce lo stato. Per avere una migliore comprensione, esaminiamo la sceneggiatura riga per riga. Nella prima riga importiamo la bash che useremo per eseguire lo script.

Successivamente, faremo eco alla shell che stiamo testando il comando wait. Memorizziamo l'id di processo del primo processo nella variabile $process_id. Ora, aspettiamo che il primo processo venga eseguito. Una volta terminato, visualizzerà che il primo processo è stato completato e visualizzerà anche lo stato con "$?"

Inoltre, puoi vedere che il secondo comando wait viene utilizzato con "$!". Ciò significa che utilizziamo il secondo ID processo con il comando wait.

Alla fine, entrambi i processi vengono eseguiti interamente e restituiscono uno stato di uscita pari a 0.

Uccidere un processo e usare wait comando

Nel secondo esempio, uccideremo un processo e quindi utilizzeremo wait comando. Diamo un nome al nostro script, killandwait.sh.

#! /bin/bash
echo "Killing process and using wait command"
sleep 10 &
procc_id=$!
kill $procc_id
wait $procc_id
echo $procc_id is terminate

Se esegui lo script precedente, otterrai il seguente output:

Come puoi vedere, lo stato di uscita è diverso e si legge quando il processo viene terminato. Questo esempio mostra come il comando restituisce uno stato di uscita diverso a seconda del destino del processo.

Verifica del valore dello stato di uscita

Nell'ultimo esempio, esamineremo uno script che utilizza check() funzione. Il controllo() la funzione accetta due argomenti. Chiamiamo il nostro script waitandcheck.sh .

Qui definiamo una funzione:

function check()
{
echo "Let's sleep for $1 seconds"
sleep $1
exit $2
}

Come puoi, questa funzione prima fa eco sulla durata della sospensione del primo processo, quindi usa quelle per dormire e uscire dal processo. Prendiamo input utilizzando le righe seguenti:

check $1 $2 &
b=$!
echo "checking the status"
wait $b && echo FINE || echo NOT FINE

Nelle righe precedenti, prendiamo l'input dall'utente e quindi emettiamo lo stato utilizzando wait comando.

Conclusione

Riguarda l'attesa utilizzo dei comandi in Linux. Come hai sperimentato, può essere sfruttato al meglio nel flusso di lavoro di automazione. Come usi il comando? Hai trovato usi aggiuntivi rispetto a quelli trattati in questo articolo? Condividi i tuoi pensieri con i nostri lettori.


Linux
  1. Comando Bash wait con esempi

  2. Comando wc Linux con esempi

  3. Comando di spegnimento di Linux spiegato con esempi

  4. Comando Traceroute di Linux, spiegato con esempi

  5. Comando JQ in Linux con esempi

Attendi comando in Linux con esempi

Il comando Tr in Linux spiegato con esempi

w Comando spiegato con esempi in Linux

Wait Command in Linux spiegato con esempi pratici

Spiegazione del comando tee di Linux (con esempi)

Spiegazione del comando csplit di Linux (con esempi)