Bash scripting - segnali: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
nessun oggetto della modifica
(→‎Cattura dei segnali: aggiunti esempi)
mNessun oggetto della modifica
 
(2 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
{{Bash_scripting}}
{{Bash scripting}}
=Segnali=
__TOC__
Ogni processo in Unix e Unix-like può ricevere dei segnali da altri processi (se appartengono allo stesso utente oppure da root). Di seguito i principali, tra quelli previsti da ''POSIX'':
Ogni processo in Unix e Unix-like può ricevere dei segnali da altri processi (se appartengono allo stesso utente oppure da [[root]]). Di seguito i principali, tra quelli previsti da [[POSIX]]:
* '''INT''' : è equivalente a <code>Ctrl-c</code> da tastiera, per uno script associato a un terminale, se non è eseguito in background. L'azione di default è la terminazione;
* '''INT''' : è equivalente a <code>Ctrl-c</code> da tastiera, per uno script associato a un terminale, se non è eseguito in background. L'azione di default è la terminazione;
* '''QUIT''' : è equivalente a <code>Ctrl-\</code> da tastiera, per uno script associato a un terminale, se non è eseguito in background. L'azione di default è la terminazione con core dump;
* '''QUIT''' : è equivalente a <code>Ctrl-\</code> da tastiera, per uno script associato a un terminale, se non è eseguito in background. L'azione di default è la terminazione con core dump;
Riga 17: Riga 17:
* '''USR2''' : è un segnale lasciato da definire all'utente. L'azione di default è la terminazione.
* '''USR2''' : è un segnale lasciato da definire all'utente. L'azione di default è la terminazione.


Il ''core dump'' è un dump dello stato (o una sua parte) del processo terminato, a scopo di debug. Può essere limitato e anche disattivato interamente. Se non attivo, l'azione eseguita è equivalente a una terminazione senza core dump.
Il ''core dump'' è un dump dello stato (o una sua parte) del processo terminato, a scopo di [[debug]]. Può essere limitato e anche disattivato interamente. Se non attivo, l'azione eseguita è equivalente a una terminazione senza core dump.


==Invio di segnali==
== Invio di segnali ==
Alcuni segnali vengono inviati automaticamente, al sussistere di determinate condizioni, ma possono anche essere inviati esplicitamente con il comando <code>kill</code> come tutti gli altri.<br/>
Alcuni segnali vengono inviati automaticamente, al sussistere di determinate condizioni, ma possono anche essere inviati esplicitamente con il comando <code>kill</code> come tutti gli altri.<br/>
Sintassi: <code>kill [ -s SIGNAL ] pid</code><br/>
Sintassi: <code>kill [ -s SIGNAL ] pid</code><br/>
Invia un segnale (di default: TERM) al processo con il pid scelto. Si noti che l'invio è asincrono, ossia <code>kill</code> non resta in attesa che il processo con pid scelto effettui l'azione associata al segnale. Di conseguenza il comando ha sempre successo, salvo che il pid non esista o non possa ricevere il segnale (per esempio perché non è dello stesso utente).
Invia un segnale (di default: TERM) al processo con il PID scelto. Si noti che l'invio è asincrono, ossia <code>kill</code> non resta in attesa che il processo con PID scelto effettui l'azione associata al segnale. Di conseguenza il comando ha sempre successo, salvo che il PID non esista o non possa ricevere il segnale (per esempio perché non è dello stesso utente).


==Cattura dei segnali==
== Cattura dei segnali ==
Le azioni da intraprendere possono essere modificati con l'istruzione <code>trap</code>.<br/>
Le azioni da intraprendere possono essere modificati con l'istruzione <code>trap</code>.<br/>
Sintassi: <code>trap 'stringa' SIGNAL1 [ ... ]</code><br/>
Sintassi: <code>trap 'stringa' SIGNAL1 [ ... ]</code><br/>
Riga 37: Riga 37:
In caso di esecuzione di una subshell le azioni da intraprendere in seguito alla ricezione di un segnale vengono reimpostate al loro valore di default, ma i segnali ignorati continuano a restare ignorati.
In caso di esecuzione di una subshell le azioni da intraprendere in seguito alla ricezione di un segnale vengono reimpostate al loro valore di default, ma i segnali ignorati continuano a restare ignorati.


===Esempi===
=== Esempi ===
* Ignora i segnali di terminazione:
* Ignora i segnali di terminazione:
<pre>
<pre>
Riga 110: Riga 110:
exit 0              # clean è eseguita anche con exit
exit 0              # clean è eseguita anche con exit
</pre>
</pre>
{{Autori
|Autore=[[Utente:HAL 9000|HAL 9000]] 19:01, 22 lug 2014 (CEST)
}}


[[Categoria:Bash]][[Categoria:Bash_Scripting]]
[[Categoria:Bash]][[Categoria:Bash_Scripting]]
6 999

contributi

Menu di navigazione