Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Invio di segnali ai processi con kill

. kill Il comando viene utilizzato per inviare segnali ai programmi. La sintassi più comune è la seguente:



uccisione [-segnale] PID...

uccisione [-segnale] PID...


Se non viene specificato alcun segnale sulla riga di comando, allora il TERMINE Il segnale (Termina) viene inviato per impostazione predefinita. Il kill il comando viene utilizzato più spesso per inviare i seguenti segnali:


Tabella 10-4: Segnali comuni


Numero

Nome

Significato

1

HUP

Riaggancio. Questa è una vestigia dei bei vecchi tempi in cui i terminali erano collegati a dispositivi remoti


Computer con linee telefoniche e modem. Il segnale viene utilizzato per indicare ai programmi che il terminale di controllo ha "riagganciato". L'effetto di questo segnale può essere dimostrato chiudendo una sessione di terminale. Il programma in primo piano in esecuzione sul terminale riceverà il segnale e terminerà.

Questo segnale viene utilizzato anche da molti programmi demone per causare una reinizializzazione. Ciò significa che quando un demone riceve questo segnale, si riavvia e rilegge il suo file di configurazione. Il server web Apache è un esempio di demone che utilizza il HUP segnale in questo modo.

2

INT

Interruzione. Esegue la stessa funzione del Ctrl-c tasto inviato dal terminale. Solitamente termina un programma.

9

KILL

Uccidi. Questo segnale è speciale. Mentre i programmi possono scegliere di gestire i segnali inviati loro in modi diversi, incluso ignorarli tutti insieme, il KILL Il segnale non viene mai effettivamente inviato al programma di destinazione. Piuttosto, il kernel termina immediatamente il processo. Quando un processo viene terminato in questo modo, non gli viene data alcuna possibilità di "pulire" il suo lavoro o di salvare il suo lavoro. Per questo motivo, il KILL Il segnale dovrebbe essere utilizzato solo come ultima risorsa quando altri segnali di terminazione falliscono.

15

TERMINE

Termina. Questo è il segnale predefinito inviato dal kill comando. Se un programma è ancora abbastanza "attivo" da ricevere segnali, verrà terminato.

18

CONT

Continua. Questo ripristinerà un processo dopo un STOP

segnale.

19

STOP

Stop. Questo segnale provoca la pausa di un processo senza terminarlo. Come il KILL segnale, non viene inviato al processo di destinazione e quindi non può essere ignorato.


Proviamo il kill comando:


[io@linuxbox~]$ xlogo &

[1] 13546

[io@linuxbox~]$ kill -1 13546

[1]+ Hangup xlogo

[io@linuxbox~]$ xlogo &

[1] 13546

[io@linuxbox~]$ kill -1 13546

[1]+ Hangup xlogo


In questo esempio, iniziamo il xlogo programma in background e quindi inviargli un HUP segnale con kill. xlogo Il programma termina e la shell indica che il processo in background ha ricevuto un segnale di interruzione. Potrebbe essere necessario premere il tasto Invio un paio di volte prima che venga visualizzato il messaggio. Si noti che i segnali possono essere specificati sia per numero che per nome, incluso il nome preceduto dalle lettere "SIG":



[io@linuxbox~]$ xlogo &

[1] 13601

[io@linuxbox~]$ uccidere -INT 13601 [1]+ Interrompi xlogo [me@linuxbox ~]$ xlogo &

[1] 13608

[io@linuxbox~]$ uccidere -SIGINT 13608

[1]+ Interrompi xlogo

[io@linuxbox~]$ xlogo &

[1] 13601

[io@linuxbox~]$ uccidere -INT 13601 [1]+ Interrompi xlogo [me@linuxbox ~]$ xlogo &

[1] 13608

[io@linuxbox~]$ uccidere -SIGINT 13608

[1]+ Interrompi xlogo


Ripeti l'esempio precedente e prova gli altri segnali. Ricorda, possiamo anche usare le specifiche del lavoro al posto dei PID.

I processi, come i file, hanno dei proprietari e devi essere il proprietario di un processo (o il super-utente) per potergli inviare segnali con kill.

Oltre all'elenco dei segnali sopra, che sono più spesso utilizzati con kill, ci sono altri segnali frequentemente utilizzati dal sistema. Ecco un elenco di altri segnali comuni:


Tabella 10-5: Altri segnali comuni


Numero

Nome

Significato

3

SMETTERE

Smettere.

11

SEGV

Violazione della segmentazione. Questo segnale viene inviato se un programma fa un uso illegale della memoria, ovvero ha tentato di scrivere in un punto in cui non era autorizzato.

20

TSTP

Arresto terminale. Questo è il segnale inviato dal terminale quando il Ctrl-z viene premuto il tasto. A differenza del STOP segnale, il TSTP il segnale viene ricevuto da


Immagine

il programma, ma il programma potrebbe scegliere di ignorarlo.


Immagine

28 Cambio finestra WINCH. Questo è il segnale inviato dal

sistema quando una finestra cambia dimensione. Alcuni programmi, come top e meno risponderanno a questo segnale ridisegnandosi per adattarsi alle nuove dimensioni della finestra.


Immagine


Per i curiosi, un elenco completo dei segnali può essere visualizzato con il seguente comando:



[io@linuxbox ~]$ kill -l

[io@linuxbox ~]$ kill -l


Il miglior sistema operativo cloud computing su OnWorks: