Bash Pagina 103: Diferență între versiuni

De la Wiki Linux Advanced
Sari la navigare Sari la căutare
 
(Nu s-a afișat o versiune intermediară efectuată de același utilizator)
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:
Linia 40: Linia 39:




[[Bash_Pagina_102|Pagina anterioară]] | [[Bash_Pagina_103|Următoarea pagină]]
[[Bash_Pagina_102|Pagina anterioară]] | [[Bash_Pagina_104|Următoarea pagină]]

Versiunea curentă din 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.



Pagina anterioară | Următoarea pagină