Bash Pagina 102: Diferență între versiuni
Admin (discuție | contribuții) (Pagină nouă: Pagina anterioară | Următoarea pagină) |
Admin (discuție | contribuții) 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.