Comenzi Linux

Comanda Bash trap

Comanda Bash trap
O comandă bash încorporată care este utilizată pentru a executa o comandă atunci când shell-ul primește orice semnal se numește „trap”. Când apare un eveniment, atunci bash trimite notificarea prin orice semnal. Multe semnale sunt disponibile în bash. Cel mai comun semnal de bash este SIGINT (Signal Interrupt). Când utilizatorul apasă CTRL + C pentru a întrerupe orice proces de la terminal, atunci acest semnal este trimis pentru a notifica sistemul.  Modul în care puteți utiliza comanda trap pentru a gestiona diferite tipuri de semnale este explicat în acest tutorial.

Sintaxă:

trap [-lp] [[arg] signal_spec ...]

sau

capcana [actiune] [semnal]
Cheie Descriere
-l Este folosit pentru a afișa lista tuturor numelor de semnal cu numărul corespunzător.
-p Este folosit pentru a afișa comanda de semnal sau comanda de captare pentru signal_spec.
arg Se utilizează pentru a executa o comandă atunci când shell-ul primește semnalul (semnalele).
semnal_spec Conține numele semnalului sau numărul semnalului.

Comanda Trap fără nicio opțiune și arg

Rulați următoarea comandă de la terminal pentru a afișa lista tuturor comenzilor asociate cu fiecare condiție. Dacă nu este setată nicio comandă „trap”, atunci următoarea comandă nu va afișa nicio informație.

$ capcana

Comanda Trap cu opțiunea -l

Rulați următoarea comandă de la terminal pentru a afișa lista tuturor numelor de semnal cu număr.

$ trap -l

Ieșirea comenzii de mai sus va afișa lista a 64 de semnale cu numere.

Setați comanda trap pentru ERR și EXIT

Următoarea primă comandă va seta o comandă „trap” care se va executa când apare orice eroare de shell sau ieșire de shell. Această comandă „trap” va fi eliminată temp.txt fișier din locația curentă. Comanda 'ls' este folosită pentru a verifica temp.txt fișierul există sau nu în locația curentă. în cele din urmă Ieșire comanda este utilizată pentru a închide terminalul și a executa comanda „trap” care este setată anterior.

$ trap 'rm temp.txt 'err exit
$ ls
$ exit

Următoarea ieșire va apărea după executarea comenzilor de mai sus.

Acum, dacă utilizatorul deschide din nou terminalul după ieșire și execută comanda 'ls' atunci temp.txt fișierul nu va exista.

Setați comanda „trap” cu numărul de semnal SIGUP, SIGQUIT și SIGKILL

Numărul semnalului de SIGUP, SIGQUIT și SIGKILL sunt 1, 3 și 9. Următoarea primă comandă va seta o capcană pentru aceste trei semnale. Când oricare dintre aceste semnal va apărea, atunci mesajul „Comanda Trap este executată”Va imprima.  Rulați următoarea comandă de la terminal.

$ trap 'echo Comanda Trap executată' 1 3 9

Când utilizatorul va apăsa Ctrl + C pentru a genera semnalul atribuit prin comanda "trap", apoi prin 'ecou' comanda trap va fi executată și va apărea următoarea ieșire.

Setați comanda „trap” pentru SIGTERM într-un script

SIGTERM semnalul este utilizat pentru a termina procesul imediat prin eliberarea resurselor sale. Creați un fișier bash numit „trapcript.SH'cu următorul cod. O buclă infinită este declarată în script care va imprima un text continuu până la SIGTERM semnalul apare. Utilizatorul trebuie să apese Ctrl + Z a genera SIGTERM semnal.

trapcript.SH

#!/ bin / bash
 
# Setați o capcană pentru semnalele SIGINT și SIGTERM
trap "echo Programul este terminat."SIGTERM SIGINT
 
# Afișați mesajul pentru a genera SIGTERM
ecou „Apăsați Ctrl + Z opriți procesul”
 
# Inițializați variabila contor, i
i = 1
 
#declare infinit pentru buclă
pentru(;;)
do
#Mprimare mesaj cu contor i
ecou „rularea buclei de $ i ori”
#Incrementează contorul cu unul
((i ++))
Terminat

Rulați scriptul executând următoarea comandă și apăsați Ctrl + Z pentru a genera SIGTERM semnal. Următoarea ieșire similară va apărea.

$ bash trapcript.SH

Setați o comandă „trap” pentru a rula o funcție bazată pe un anumit semnal

Puteți asocia o comandă „trap” cu orice funcție definită de utilizator. Creați un bash numit trapfunc.SH și adăugați următorul script. Aici, o funcție personalizată numită func () este declarat să imprime un mesaj simplu, „Sarcină finalizată”. O buclă de intrare este definită pentru a citi și tipări lista tuturor fișierelor și folderelor din directorul de lucru curent. 'capcană' comanda care este definită la începutul listei va apela funcția, func () când programul se termină.

trapfunc.SH

#!/ bin / bash
# Funcția de apelare la ieșire
trap func exit
# Declarați funcția
function func ()
 
ecou „Sarcină finalizată”

# Citiți fișierele și folderele din lista curentă de directoare folosind pentru buclă
pentru eu in *
do
ecou „$ i”
Terminat

Rulați scriptul de la terminal.

Rulați scriptul.

$ bash trapfunc.SH

Următoarea ieșire arată că, „Sarcină finalizată”Textul este tipărit după tipărirea tuturor fișierelor și folderelor din directorul curent.

Concluzie

Acest tutorial arată cum comanda „trap” poate fi utilizată în Linux pentru a efectua orice activitate automatizată pe baza semnalului generat. Ajută utilizatorii să urmărească diferite tipuri de erori și să ia măsuri adecvate care pot fi atribuite înainte folosind această comandă. Multe programe sau scripturi alocă anumite resurse speciale atunci când rulează în sistem. Dacă un program sau un script care rulează iese sau se termină anormal, atunci resursele utilizate de acel program sunt blocate. comanda „trap” poate fi utilizată pentru a rezolva această problemă. Sarcina de curățare a resurselor poate fi realizată cu ușurință utilizând această comandă. Sper că cititorul va avea o idee clară despre utilizările acestei comenzi după ce a citit acest tutorial.

How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...
Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...
OpenTTD vs Simutrans
Creating your own transport simulation can be fun, relaxing and extremely enticing. That's why you need to make sure that you try out as many games as...