Sintassi:
trap [-lp] [[arg] signal_spec… ]o
trappola [azione] [segnale]Chiave | Descrizione |
-io | Viene utilizzato per visualizzare l'elenco di tutti i nomi dei segnali con il numero corrispondente. |
-p | Viene utilizzato per visualizzare il comando del segnale o il comando trap per signal_spec. |
argomento | Viene utilizzato per eseguire un comando quando la shell riceve i segnali. |
signal_spec | Contiene il nome del segnale o il numero del segnale. |
- Il comando Trap senza valore arg o con valore arg '-' ripristinerà il segnale specificato al suo valore originale.
- Il comando trap con valore arg 'null' ignorerà il segnale specificato inviato dalla shell o dal comando.
- Un signal_spec con il valore, uscita (0) eseguirà arg dopo essere uscito dalla shell.
- Un signal_spec con il valore eseguire il debug eseguirà arg prima di ogni singolo comando.
- Un signal_spec con il valore ritorno eseguirà arg ogni volta che viene eseguita una funzione di shell o uno script eseguito da ".".
- Un signal_spec con il valore err eseguirà arg ogni volta in caso di errore del comando.
Comando Trap senza alcuna opzione e argomento
Esegui il seguente comando dal terminale per visualizzare l'elenco di tutti i comandi associati a ciascuna condizione. Se nessun comando 'trap' non è impostato prima, il comando seguente non visualizzerà alcuna informazione.
$ trappolaComando Trap con l'opzione -l
Eseguire il seguente comando dal terminale per visualizzare l'elenco di tutti i nomi dei segnali con numero.
$ trap -lL'output del comando sopra mostrerà l'elenco di 64 segnali con numeri.
Imposta il comando trap per ERR e EXIT
Il seguente primo comando imposterà un comando 'trap' che verrà eseguito quando si verifica un errore di shell o esce dalla shell. Questo comando 'trap' rimuoverà temperatura.TXT file dalla posizione corrente. Il comando 'ls' è usato per controllare il temperatura.TXT il file esiste o meno nella posizione corrente current. infine Uscita comando viene utilizzato per chiudere il terminale ed eseguire il comando 'trap' impostato prima.
$ trap 'rm temp.txt' err exit$ ls
$ uscita
Il seguente output apparirà dopo aver eseguito i comandi sopra.
Ora, se l'utente apre di nuovo il terminale dopo l'uscita ed esegue il comando 'ls' allora temperatura.TXT il file non esisterà.
Imposta il comando 'trap' con il numero di segnale SIGUP, SIGQUIT e SIGKILL
Il numero del segnale di SIGUP, SIGQUIT e SIGKILL sono 1, 3 e 9. Il seguente primo comando imposterà una trappola per questi tre segnali. Quando si verifica uno di questi segnali, il messaggio "Il comando trap viene eseguito"verrà stampato. Esegui il seguente comando dal terminale.
$ trap 'echo Trap comando eseguito' 1 3 9Quando l'utente premerà Ctrl+C per generare il segnale assegnare con il comando 'trap' quindi il 'eco' il comando del comando trap verrà eseguito e apparirà il seguente output.
Imposta il comando 'trap' per SIGTERM in uno script
SIGTERM il segnale viene utilizzato per terminare immediatamente il processo rilasciando le sue risorse. Crea un file bash chiamato 'trascrizione.sh'con il seguente codice. Nello script viene dichiarato un ciclo for infinito che stamperà un testo continuamente fino a SIGTERM si verifica il segnale. L'utente deve premere Ctrl+Z generare SIGTERM segnale.
trascrizione.sh
#!/bin/bash# Imposta una trappola per i segnali SIGINT e SIGTERM
trap "echo Il programma è terminato." SIGTERM SIGINT
#Visualizza messaggio per generare SIGTERM
echo "Premi Ctrl+Z ferma il processo"
#Inizializza la variabile contatore, i
i=1
#dichiara infinito for loop
per(;;)
fare
#Stampa messaggio con contatore i
echo "eseguendo il ciclo per $i volte"
#Aumenta il contatore di uno
((i++))
fatto
Esegui lo script eseguendo il seguente comando e premi Ctrl+Z per generare SIGTERM segnale. Apparirà il seguente output simile.
$ trascrizione bash.sh
Imposta un comando "trap" per eseguire una funzione basata su un segnale particolare
Puoi associare un comando "trap" a qualsiasi funzione definita dall'utente. Crea una bash chiamata trappola.sh e aggiungi il seguente script. Qui, una funzione personalizzata denominata funzione() è dichiarato per stampare un semplice messaggio, “Compito completato”. Viene definito un ciclo for-in per leggere e stampare l'elenco di tutti i file e le cartelle della directory di lavoro corrente. 'trappola' comando che è definito all'inizio dell'elenco chiamerà la funzione, funzione() quando il programma termina.
trappola.sh
#!/bin/bash# Chiama la funzione funzione all'uscita
funzione trap uscita
# Dichiara la funzione
funzione funzione()
echo "Attività completata"
# Legge i file e le cartelle dell'elenco di directory corrente usando il ciclo for
per io in *
fare
echo "$i"
fatto
Esegui lo script dal terminale.
Esegui lo script.
$ bash trapfunzione.shIl seguente output mostra che, “Compito completato"il testo viene stampato dopo aver stampato tutti i file e le cartelle della directory corrente.
Conclusione
Questo tutorial mostra come utilizzare il comando "trap" in Linux per eseguire qualsiasi attività automatizzata basata sul segnale generato. Aiuta gli utenti a tracciare diversi tipi di errori e a intraprendere le azioni appropriate che possono essere assegnate in precedenza utilizzando questo comando. Molti programmi o script allocano alcune risorse particolari durante l'esecuzione nel sistema. Se un programma o uno script in esecuzione esce o termina in modo anomalo, le risorse utilizzate da quel programma vengono bloccate. Il comando 'trap' può essere usato per risolvere questo problema. L'attività di pulizia delle risorse può essere eseguita facilmente utilizzando questo comando. Spero che il lettore avrà un'idea chiara degli usi di questo comando dopo aver letto questo tutorial.