Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ
îðèãèíàëüíîãî äîêóìåíòà
: http://www.arcetri.astro.it/irlab/doc/library/linux/AppLinux/al36.htm
Äàòà èçìåíåíèÿ: Tue Sep 21 18:08:34 1999 Äàòà èíäåêñèðîâàíèÿ: Sat Dec 22 13:21:16 2007 Êîäèðîâêà: Ïîèñêîâûå ñëîâà: reflection nebula |
I segnali sono dei numeri ai quali i programmi attribuiscono significati determinati, relativi a quanto accade nel sistema. I segnali rappresentano sia un'informazione che un ordine: nella maggior parte dei casi i programmi possono intercettare i segnali e compiere delle operazioni correlate prima di adeguarsi al nuovo stato, oppure addirittura rifiutare gli ordini; in altri casi sono sottomessi immediatamente agli ordini.
La tabella 24.1 elenca i segnali descritti dallo standard POSIX.1, mentre l'elenco completo puÐ essere ottenuto consultando la pagina di manuale signal(7).
I numeri dei segnali sono stati abbinati a nomi standard che ne rappresentano in breve il significato (in forma di abbreviazione o di acronimo). I numeri dei segnali non sono standard tra i vari sistemi Unix e dipendono dal tipo di architettura hardware utilizzata. Anche all'interno di GNU/Linux stesso ci possono essere differenze a seconda del tipo di macchina che si utilizza.
Questo particolare Õ importante sia per giustificare il motivo per cui Õ opportuno fare riferimento ai segnali in forma verbale, sia per ricordare la necessitÞ di fare attenzione con i programmi che richiedono l'indicazione di segnali esclusivamente in forma numerica (per esempio top
).
Alcuni segnali possono essere inviati al programma con il quale si interagisce attraverso delle combinazioni di tasti. Di solito si invia un segnale SIGINT
attraverso la combinazione [Ctrl+c], un segnale SIGTSTP
attraverso la combinazione [Ctrl+z] e un segnale SIGQUIT
attraverso la combinazione [Ctrl+\].
L'effetto di queste combinazioni di tasti dipende dalla configurazione della linea di terminale. Questa puÐ essere controllata o modificata attraverso il programma stty
(
32.3.2). Come si puÐ vedere dall'esempio seguente, alcune combinazioni di tasti (rappresentate nella forma ^x) sono associate a delle funzioni. Nel caso di quelle appena descritte, le funzioni sono intr
, susp
e quit
.
$
stty
[Invio]-
a
speed 38400 baud; rows 28; columns 88; line = 204; intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke |
Le shell offrono generalmente dei comandi interni per l'invio di segnali ai processi da loro avviati. In particolare, quelle che come Bash sono in grado di gestire i job, utilizzano i segnali in modo trasparente per fare riprendere un processo sospeso.
Per esempio, nel caso di Bash, se un processo viene sospeso attraverso la combinazione [Ctrl+z], cosa che dovrebbe generare un segnale SIGTSTP
(in base alla configurazione della linea di terminale), questo puÐ essere riportato in primo piano, e quindi in funzione, attraverso il comando fg
, con il quale in pratica si invia al processo un segnale SIGCONT
.
Il modo normale per inviare un segnale a un processo Õ l'uso di kill
. Questo, a seconda dei casi, puÐ essere un comando interno di shell o un programma. Il nome kill
deriva in particolare dall'effetto che si ottiene utilizzandolo senza l'indicazione esplicita di un segnale da inviare: quello predefinito Õ SIGTERM
attraverso il quale si ottiene normalmente la conclusione del processo destinatario.
Attraverso kill
si riesce solitamente a ottenere un elenco dei segnali disponibili con il loro numero corrispondente. CiÐ Õ molto importante per conoscere esattamente quale numero utilizzare con i programmi che non permettono l'indicazione dei segnali in forma verbale.
$
kill
[Invio]-
l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGIOT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR |
Nelle sezioni seguenti viene descritto il programma kill
, mentre di solito, se non si indica esplicitamente che si fa riferimento a un programma, interverrÞ il comando interno di shell.
kill [<opzioni>] [<PID>...] |
Permette di inviare un segnale a uno o piÛ processi identificati attraverso il loro numero PID. Se non viene specificato, il segnale predefinito Õ SIGTERM
che normalmente procura la conclusione dell'esecuzione dei processi destinatari. Questo giustifica il nome kill
.
|
Specifica il nome o il numero del segnale da inviare.
|
Mostra l'elenco dei segnali disponibili con i numeri corrispondenti.
$
kill
-
s SIGHUP 1203
Invia il segnale SIGHUP
al processo corrispondente al numero 1203.
$
kill
-
s 1 1203
Esattamente come nell'esempio precedente
$
kill
-
l
Mostra l'elenco dei segnali disponibili.
Negli esempi di questo documento viene indicato spesso il segnale da inviare senza l'opzione |
killall [<opzioni>] [
|
Invia un segnale a tutti i processi che eseguono i comandi specificati. Si utilizza quindi killall
per inviare un segnale a dei processi identificati per nome. Se non viene specificato il segnale da inviare, si utilizza SIGTERM
. I segnali possono essere indicati per nome o per numero.
|
Mostra l'elenco dei segnali disponibili con i numeri corrispondenti.
$
killall
-
HUP pippo
Invia il segnale SIGHUP
a tutti i processi avviati con il comando pippo
. I processi soggetti a questo sono solo quelli che appartengono all'utente che invia il segnale.
fuser [<opzioni>] <file>... |
Il compito normale di fuser
Õ quello di elencare i processi che utilizzano i file indicati come argomento. In alternativa, fuser
permette anche di inviare un segnale ai processi che utilizzano un determinato gruppo di file, utilizzando l'opzione
. -
kfuser
Õ giÞ stato descritto nella sezione
26.2.1.
---------------------------
Appunti Linux 1999.09.21 --- Copyright © 1997-1999 Daniele Giacomini -- daniele @ pluto.linux.it