Numeri del segnale di uccisione di Linux

Numeri del segnale di uccisione di Linux
Questo tutorial spiega quali sono i segnali di uccisione Linux e come usarli per interrompere, interrompere, sospendere e continuare i processi.

Cos'è i segnali di uccisione Linux?

I segnali di uccisione consentono l'interazione tra diversi processi. I segnali concreti sono notifiche di eventi inviate ai processi principalmente per interrompere, terminare, uccidere o sospendere i processi (ecco perché usiamo il termine "uccisione"). I segnali possono essere inviati per processi o dal kernel e normalmente vengono inviati quando un'anomalia o una condizione eccezionale richiedono un'elaborazione speciale o quando un utente interrompe o termina manualmente un processo (e.G., Quando si preme CTRL+C),

Quando un segnale viene inviato a un processo, tale segnale, o notifica, può soddisfare un'azione predefinita come risposta o può essere gestito da un gestore del segnale. Un gestore del segnale è un codice personalizzato del programma il cui processo ha ricevuto il segnale, che definisce il comportamento del processo quando viene ricevuto il segnale (ad eccezione dei segnali Sigkill e Sigstop, che non possono essere gestiti, ignorati o bloccati).

Quando viene inviato il segnale, le azioni predefinite che possono aver luogo sono le seguenti:

  • Termine: Il processo è terminato.
  • IGN: Il segnale viene ignorato senza influire sul processo.
  • Nucleo: Viene creato un file dump-core.
  • Fermare: Il processo viene interrotto.
  • Cont: Il processo riprende dopo essere stato fermato.

A seconda del segnale che alcune di queste azioni possono avvenire, il programma può anche contenere un gestore del segnale per eseguire l'azione corretta.

Riassunto: i segnali sono messaggi consegnati ai processi che notificano loro un evento.

Segnali disponibili:

Per elencare tutti i nomi e i numeri del segnale sul tuo sistema, è possibile utilizzare il comando Kill seguito dal flag -l, come mostrato di seguito.

uccidere -l

Come puoi vedere, ci sono 64 segnali, probabilmente i più noti da tutti noi è il numero 9 (Sigkill) utilizzato per terminare i processi inclusi i processi figlio, immediatamente.

  • Sigkill (9): Il segnale Sigkill viene utilizzato per uccidere o interrompere immediatamente i processi. I segnali di Sigkill non possono essere gestiti, ignorati o fermati.
  • Sigstop (19): Questo segnale è quello di fermare o mettere in pausa processi che possono essere ripresi successivamente.
  • SigCont (18): Il segnale SigCont viene utilizzato per riprendere i processi fermati o pausa.

Come usare i segnali di uccisione:

La sintassi corretta per inviare segnali è:

uccisione <-SignalName>

O

uccisione <-SignalNumber>

Puoi sostituire IR con i nomi o i numeri che abbiamo ricevuto in precedenza quando si esegue il comando kill -l. Il PID è l'ID di processo che puoi imparare utilizzando il comando PS come mostrato nelle seguenti istruzioni.

Per iniziare la sezione pratica di questo tutorial, proviamo Sigstop e SigCont per mettere in pausa un processo e quindi riprendiamolo.
Per il primo esempio, ho creato un po 'di LinuxHintsignal nominato in codice che stampa continuamente "Linuxhint.com"Come mostrato nello screenshot seguente.

Per inviare un segnale al processo, prima che ho bisogno di imparare il suo PID. Per vedere l'ID processo (PID) è necessario eseguire il ps comando. Nel mio caso, sono quello che ha eseguito il processo, quindi uso il ps comando seguito dal -u bandiera per mostrare solo i miei processi.

Nota: Per ulteriori istruzioni sul comando PS, leggi usando il comando PS in Linux.

Come puoi vedere, il PID della corsa Linuxhintsignal Lo script è 16182.

La seguente screenshot mostra due terminali; Il terminale destro mostra la consegna del segnale SIGSTOP per il processo 16182. Il terminale sinistro mostra come viene interrotto il processo quando invio il segnale.

uccidere -sigstop

Come puoi vedere sul terminale destro, il processo è stato fermato correttamente.

È necessario inviare il segnale SIGCONT per riprendere l'esecuzione del processo, come mostrato nelle schermate seguenti.

Kill -sigcont

Come puoi vedere, il processo è ripreso.

Puoi ottenere lo stesso risultato sostituendo i nomi del segnale per i loro numeri. L'esempio seguente ripete lo scenario precedente, ma questa volta sta definendo i segnali per i loro numeri.

L'esempio seguente mostra anche come il Sigkill viene consegnato al processo 17721 per metterlo in pausa. Questa volta invece di specificare il nome del segnale, specifico il numero del segnale restituito dal uccidere -l comando, in questo caso, 19 per il segnale Sigstop.

Uccidi -19

La seguente screenshot mostra come specificare il segnale SigCont, anche usando il suo numero anziché il suo nome.

Uccidi -18

Come puoi vedere, il risultato è lo stesso quando si utilizza il nome o il numero del segnale.

Come detto in precedenza, il segnale Sigkill viene utilizzato per terminare completamente un processo; è probabilmente il segnale più usato dagli utenti.

Come puoi vedere nell'esempio seguente, in cui Sigkill è implementato con il suo numero (9), lo script è stato completamente terminato o ucciso.

Uccidi -9

Altri segnali importanti:

  • Sigint: Questo segnale viene consegnato quando l'utente richiede l'interruzione del processo (E.G., Ctrl+c).
  • Igterm: Il segnale SIGTERM viene consegnato per richiedere una risoluzione del processo, ma solo per richiedere e non terminare. Contrariamente a Sigkill o Sigstop, questo segnale può essere gestito, bloccato o ignorato.
  • SigilL: Questo segnale viene utilizzato per terminare i processi come causa di un errore come l'operazione o gli errori di esecuzione. Questo segnale non può essere ignorato.
  • Sigchld: Utilizzato per avvisare i processi dei genitori sugli eventi dei processi figlio.
  • Sighup: Questo segnale viene attivato quando la connessione viene bruscamente interrotta.
  • Sigipe: Questo segnale viene inviato ai processi che cercano di scrivere su un tubo senza un'estremità di lettura o che non può essere letto.
  • SIGQUIT: Questo segnale è simile a Sigint ma produce una dump centrale.

Conclusione:

L'uso dei segnali Linux per uccidere, fermare, pause processi, tra le altre funzioni, è una conoscenza di base che qualsiasi utente Linux deve trattenere. Una profonda conoscenza dei segnali è particolarmente rilevante per i programmatori che devono garantire che i gestori di segnale non producano effetti indesiderati sul sistema. Come puoi vedere, ci sono dozzine di segnali disponibili; Questo tutorial si concentrava solo su quelli più comuni. Puoi ottenere maggiori informazioni sui segnali Linux su https: // www.gnu.org/software/libc/manuale/html_node/segnali standard.html.

Grazie per aver letto Linux Sint; Continua a seguirci per ulteriori suggerimenti e tutorial di Linux.