GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Comando Bash wait con esempi

Introduzione

La bash wait command è un comando Shell che attende il completamento dei processi in esecuzione in background e restituisce lo stato di uscita. A differenza del comando sleep, che attende un tempo specificato, il wait il comando attende il completamento di tutte o di specifiche attività in background.

Questo tutorial spiega wait sintassi dei comandi e fornisce codici di script bash di esempio.

Prerequisiti

  • Accesso alla riga di comando/terminale.
  • Privilegi di amministratore (sudo).
  • Un editor di testo, come Vim o Nano.

Sintassi del comando bash wait

Esistono diversi modi per utilizzare attesa comando negli script bash. La tabella seguente spiega ogni caso d'uso.

Comando Spiegazione
wait Senza alcun parametro, il wait il comando attende il completamento di tutti i processi in background prima di continuare lo script.
wait <process or job ID> Un PID o un ID lavoro aggiunto attende la fine di un processo specifico prima di continuare lo script.
wait -n Attende solo il completamento del seguente processo in background e restituisce uno stato di uscita.
wait -f La chiusura di un programma attende prima il completamento dell'attività in background prima di uscire.

Esempi di comando di attesa

Ci sono tre parametri aggiuntivi da sapere quando si lavora con wait negli script bash:

1. Il segno e commerciale (& ) dopo che un comando indica un lavoro in background.

2. $! recupera il PID dell'ultimo processo in background. Memorizza il PID precedente in una variabile quando si lavora con più processi in background.

3. $? stampa lo stato di uscita dell'ultimo processo.

Per vedere come funzionano insieme questi tre parametri, apri una finestra di terminale ed esegui:

sleep 10 &
echo $!
echo $?

Il $! memorizza il PID del processo in background, mentre $? memorizza lo stato di uscita. Lo stato di uscita 0 indica che il comando è terminato con successo.

Esempio di attesa per processo singolo

1. Inizia aprendo il terminale e crea un semplice processo in background:

sleep 10 &

2. Conferma che il lavoro è in esecuzione in background con:

jobs -l

3. Usa il wait comando senza parametri da mettere in pausa fino al completamento del processo:

wait

Il terminale attende il completamento del processo in background.

Dopo 10 secondi (a causa di sleep 10 ), la console stampa un Fatto messaggio.

Esempio di attesa bash a processo singolo

Usa il wait comando per indicare a che punto un processo in background deve essere eseguito all'interno di uno script.

1. Ad esempio, aggiungi il seguente codice in un editor di testo:

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

Se il processo in background non completa il primo e il secondo processo, wait il comando richiama una pausa per attendere il completamento del processo in background dopo il secondo processo prima di continuare con il terzo processo.

2. Salva lo script come single_process.sh . Nel terminale, cambia i permessi per rendere eseguibile lo script:

sudo chmod +x single_process.sh

3. Esegui lo script con:

./single_process.sh

Il processo in background viene completato in qualsiasi momento prima dell'wait comando e lo script continua.

Esempio di attesa di più processi

1. Apri l'editor di testo e aggiungi il seguente script con più processi:

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

Lo script stampa l'ora corrente prima e dopo il wait comando. Senza alcun parametro, il programma attende il completamento di tutti i processi.

2. Salva lo script come test.sh e chiudere il file. Quindi, rendi eseguibile lo script:

sudo chmod +x test.sh

3. Infine, esegui il programma con:

./test.sh

Poiché i processi vengono eseguiti in background, tutti e tre vengono completati in quindici secondi.

4. Utilizza lo stesso script per testare i seguenti casi d'uso:

  • Aggiungi il -n parametro per <strong>wait</strong> . Viene completato solo il processo più veloce e lo script termina in dieci secondi.
  • Aggiungi l'ID lavoro per indicare per quale lavoro lo script deve attendere. Ad esempio, wait %1 pause per il processo 1 (sleep 10 ) per completare.

Processi multipli bash wait con esempio PID

1. Quando si lavora con più processi, utilizzare il PID per identificare un processo. Lo script di esempio seguente mostra un singolo caso d'uso:

#!/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. Salva lo script come multi_wait.sh . Rendi eseguibile lo script con:

sudo chmod +x multi_wait.sh

3. Esegui lo script per vedere l'output:

./multi_wait.sh

Lo script impiega due secondi per completare il primo processo (a causa di sleep 2 ) e tre secondi per completare il secondo processo. I due processi vengono eseguiti contemporaneamente e si completano entrambi in tre secondi.


Ubuntu
  1. Comando sorgente Linux con esempi

  2. Comando wc Linux con esempi

  3. Bash HereDoc Tutorial con esempi

  4. Comando Nohup con esempi

  5. '&&' vs. '&' con il comando 'test' in Bash

Scripting Bash – Spiegazione del comando Printf con esempi

Wall Command in Linux con esempi

Ordina il comando in Linux con esempi

Comando Usermod con esempi

Comando IP Linux con esempi

Wait Command in Linux spiegato con esempi pratici