Comandi Linux

Comando Trappola Bash

Comando Trappola Bash
Un comando bash integrato che viene utilizzato per eseguire un comando quando la shell riceve un segnale è chiamato "trap". Quando si verifica un evento, bash invia la notifica tramite qualsiasi segnale. Molti segnali sono disponibili in bash. Il segnale più comune di bash è SIGINT (Signal Interrupt). Quando l'utente preme CTRL+C per interrompere qualsiasi processo dal terminale, questo segnale viene inviato per avvisare il sistema.  Come è possibile utilizzare il comando trap per gestire diversi tipi di segnali è spiegato in questo tutorial.

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.

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.

$ trappola

Comando Trap con l'opzione -l

Eseguire il seguente comando dal terminale per visualizzare l'elenco di tutti i nomi dei segnali con numero.

$ trap -l

L'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 9

Quando 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.sh

Il 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.

Come invertire la direzione di scorrimento del mouse e dei touchpad in Windows 10
Topo e Touchpads non solo rende l'elaborazione semplice, ma anche più efficiente e richiede meno tempo. Non possiamo immaginare una vita senza questi ...
Come modificare il puntatore del mouse e le dimensioni, il colore e lo schema del cursore su Windows 10
Il puntatore del mouse e il cursore in Windows 10 sono aspetti molto importanti del sistema operativo. Questo si può dire anche per altri sistemi oper...
Motori di gioco gratuiti e open source per lo sviluppo di giochi Linux
Questo articolo tratterà un elenco di motori di gioco gratuiti e open source che possono essere utilizzati per lo sviluppo di giochi 2D e 3D su Linux....