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ă valoare arg sau cu valoarea arg '-' va reseta semnalul specificat la valoarea inițială.
- Comanda Trap cu valoare arg „nulă” va ignora semnalul specificat trimis de către shell sau comandă.
- Un signal_spec cu valoarea, ieșire (0) va executa arg după ieșirea din shell.
- Un signal_spec cu valoarea depanare va executa arg înainte de fiecare comandă.
- Un signal_spec cu valoarea întoarcere va executa arg de fiecare dată când se execută o funcție shell sau un script rulat de „.”.
- Un signal_spec cu valoarea greșește va executa arg de fiecare dată la eșecul comenzii.
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.
$ capcanaComanda 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 -lIeș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 9Câ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.SHUrmă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.