Bash Pagina 102: Diferență între versiuni

De la Wiki Linux Advanced
Sari la navigare Sari la căutare
 
Fără descriere a modificării
 
(Nu s-au afișat 2 versiuni intermediare efectuate de același utilizator)
Linia 1: Linia 1:
== Semnale, Capcane, Blocarea Fișierelor și Descriptori de Fișiere - prezentare generală ==
'''Semnale și Capcane'''
* Semnalele sunt notificări trimise către un proces pentru a indica anumite evenimente (ex. `SIGINT`, `SIGTERM`).
* Comanda `trap` poate fi utilizată pentru a captura semnalele și a defini acțiuni specifice, prevenind oprirea necontrolată a scriptului.
* Exemplu de utilizare:
<code>trap "echo 'Script oprit de utilizator'; exit" SIGINT</code>
Acest cod interceptează semnalul `SIGINT` (CTRL+C) și execută un mesaj înainte de încheierea scriptului.
'''Blocarea Fișierelor'''
* Blocarea fișierelor previne accesul simultan al mai multor procese la același fișier, evitând coruperea datelor.
* Se poate realiza blocarea exclusivă a fișierului folosind comanda `flock`, de exemplu:
<code>flock /tmp/lockfile -c "comanda_de_executat"</code>
În acest caz, `comanda_de_executat` va fi rulată doar dacă fișierul `/tmp/lockfile` nu este deja blocat.
'''Descriptori de Fișiere'''
* Descriptoriii de fișiere sunt valori numerice care identifică fișierele deschise de un proces.
* În shell, descriptorii de fișiere comuni sunt:
`0` — Stdin (Intrare standard)
`1` — Stdout (Ieșire standard)
`2` — Stderr (Eroare standard)
* Exemple de redirecționare:
<code>echo "Mesaj" > out.txt  # Redirecționează stdout în fișier</code>
<code>echo "Eroare" 2> error.txt  # Redirecționează stderr în fișier</code>
Descriptorii interni, folositor pentru aflarea fisierelor deschise de catre shell
ls -l /proc/$$/fd ($$ este PID-ul curent al shell-ului deschis de script)
Deschisi in mod standard de catre shell si abstractizati ca si fisier, folositori pentru operatii cu anumite programe:
/dev/stdin (acelasi cu `0` — Stdin)
/dev/stdout (acelasi cu `1` — Stdout)
/dev/stderr (acelasi cu `2` — Stderr)
'''Rezumat:'''
* Semnalele și capcanele permit manipularea comportamentului la întreruperi.
* Blocarea fișierelor este esențială pentru gestionarea accesului concurent la resurse.
* Descrierile de fișiere sunt esențiale pentru redirecționarea ieșirilor și manipularea fluxurilor de date.
Aceste concepte avansate permit un control precis asupra execuției scripturilor și accesului la fișiere.





Versiunea curentă din 31 octombrie 2024 19:28

Semnale, Capcane, Blocarea Fișierelor și Descriptori de Fișiere - prezentare generală

Semnale și Capcane

  • Semnalele sunt notificări trimise către un proces pentru a indica anumite evenimente (ex. `SIGINT`, `SIGTERM`).
  • Comanda `trap` poate fi utilizată pentru a captura semnalele și a defini acțiuni specifice, prevenind oprirea necontrolată a scriptului.
  • Exemplu de utilizare:

trap "echo 'Script oprit de utilizator'; exit" SIGINT Acest cod interceptează semnalul `SIGINT` (CTRL+C) și execută un mesaj înainte de încheierea scriptului.

Blocarea Fișierelor

  • Blocarea fișierelor previne accesul simultan al mai multor procese la același fișier, evitând coruperea datelor.
  • Se poate realiza blocarea exclusivă a fișierului folosind comanda `flock`, de exemplu:

flock /tmp/lockfile -c "comanda_de_executat" În acest caz, `comanda_de_executat` va fi rulată doar dacă fișierul `/tmp/lockfile` nu este deja blocat.

Descriptori de Fișiere

  • Descriptoriii de fișiere sunt valori numerice care identifică fișierele deschise de un proces.
  • În shell, descriptorii de fișiere comuni sunt:
`0` — Stdin (Intrare standard)
`1` — Stdout (Ieșire standard)
`2` — Stderr (Eroare standard)
  • Exemple de redirecționare:

echo "Mesaj" > out.txt # Redirecționează stdout în fișier echo "Eroare" 2> error.txt # Redirecționează stderr în fișier

Descriptorii interni, folositor pentru aflarea fisierelor deschise de catre shell

ls -l /proc/$$/fd ($$ este PID-ul curent al shell-ului deschis de script)

Deschisi in mod standard de catre shell si abstractizati ca si fisier, folositori pentru operatii cu anumite programe:

/dev/stdin (acelasi cu `0` — Stdin)
/dev/stdout (acelasi cu `1` — Stdout)
/dev/stderr (acelasi cu `2` — Stderr)

Rezumat:

  • Semnalele și capcanele permit manipularea comportamentului la întreruperi.
  • Blocarea fișierelor este esențială pentru gestionarea accesului concurent la resurse.
  • Descrierile de fișiere sunt esențiale pentru redirecționarea ieșirilor și manipularea fluxurilor de date.

Aceste concepte avansate permit un control precis asupra execuției scripturilor și accesului la fișiere.




Pagina anterioară | Următoarea pagină