Bash Pagina 103: Diferență între versiuni

De la Wiki Linux Advanced
Sari la navigare Sari la căutare
Fără descriere a modificării
Linia 1: Linia 1:
== Semnale și capcane (traps) ==
== Semnale și capcane (traps) ==


TO BE CONTINUED - slide 135
'''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.
 






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

Versiunea de la data 30 octombrie 2024 13:01

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ă