Bash Pagina 103: Diferență între versiuni
Admin (discuție | contribuții) |
Admin (discuție | contribuții) |
||
Linia 17: | Linia 17: | ||
* Afișați o listă de nume de semnal și numerele acestora. Puteți afișa lista completă a semnalelor și a numerelor acestora folosind comanda: | * Afișați o listă de nume de semnal și numerele acestora. Puteți afișa lista completă a semnalelor și a numerelor acestora folosind comanda: | ||
kill -l | kill -l | ||
* Capcană de bază pentru curățarea fișierelor | * Capcană de bază pentru curățarea fișierelor | ||
O capcană de curățare ajută la eliminarea fișierelor temporare sau a altor resurse: | O capcană de curățare ajută la eliminarea fișierelor temporare sau a altor resurse: |
Versiunea de la data 30 octombrie 2024 13:02
Semnale și capcane (traps)
Ce este trap?
`trap` este o comandă încorporată în Bash, utilizată pentru a răspunde la semnalele trimise unui proces. Un semnal este o notificare trimisă unui proces pentru a-l informa despre un eveniment, permițând procesului să gestioneze acțiuni de întrerupere, ieșire sau alte evenimente predefinite.
- Semnale comune
- SIGINT: Semnal de întrerupere (de exemplu, apăsarea `CTRL+C` în terminal pentru a opri un proces). - EXIT: Un semnal special în Bash care este declanșat atunci când procesul se încheie, oferind o modalitate de a executa curățări sau alte acțiuni finale.
`trap` permite gestionarea acestor semnale și implementarea de acțiuni personalizate care se declanșează automat la primirea unui semnal specific.
- Exemplu de capcană EXIT
`EXIT` este un semnal special care asigură execuția unei comenzi la finalizarea procesului shell. Acesta este util, de exemplu, pentru curățarea resurselor la ieșirea din script:
trap "echo 'Curățare finală înainte de ieșire'; rm -f /tmp/tempfile" EXIT
- Afișați o listă de nume de semnal și numerele acestora. Puteți afișa lista completă a semnalelor și a numerelor acestora folosind comanda:
kill -l
- Capcană de bază pentru curățarea fișierelor
O capcană de curățare ajută la eliminarea fișierelor temporare sau a altor resurse:
trap "rm -f /tmp/tempfile" EXIT
Această comandă va elimina /tmp/tempfile la finalizarea procesului, indiferent dacă scriptul a rulat cu succes sau s-a încheiat anticipat.
- Utilizarea capcanelor pentru a asigura disponibilitatea serviciului
Capcanele pot fi utilizate pentru a preveni opririle necontrolate ale unui serviciu. De exemplu:
trap "systemctl restart myservice" SIGHUP SIGINT SIGTERM
Această configurație va reporni myservice dacă scriptul primește un semnal de oprire, astfel încât serviciul să rămână activ.
- Utilizarea unei funcții într-un apel de capcană
Capcanele pot apela funcții personalizate pentru a executa acțiuni complexe:
clean_up() { echo "Curățare resurse..." rm -f /tmp/tempfile } trap clean_up EXIT
În acest exemplu, funcția clean_up este apelată atunci când scriptul primește un semnal EXIT, asigurând curățarea fișierului temporar.