Motivi per cui Kill potrebbe non funzionare in Linux, come risolverlo?

Motivi per cui Kill potrebbe non funzionare in Linux, come risolverlo?

Tutti noi, a un certo punto o nell'altro, abbiamo sperimentato un congelamento del programma e non rispondendo. In tali casi, terminare il programma e riavviarlo è una soluzione semplice ed efficiente. In questo articolo, ti mostreremo come interrompere i processi non rispondenti usando il comando kill.

Il comando di uccisione

Come accennato in precedenza, quando un programma smette di rispondere e non è possibile riavviarlo, hai bisogno di una nuova soluzione. A quel punto, gli utenti di Windows aprirebbero il proprio task manager per sbarazzarsi del processo congelato. Non esiste un Task Manager integrato in Linux, ma esiste un comando che possiamo usare per ottenere lo stesso effetto della funzionalità dell'attività finale in Windows. Questo comando è noto come comando kill e possiamo usarlo in più modi per aiutarci e il sistema per sbarazzarci di istanze corrotte.

Uccidi la sintassi

La sintassi per il comando kill è semplice.

$ kill - [segnale] pid

Qui, due cose hanno bisogno di spiegazioni - vale a dire, segnale e PID. Diamo un'occhiata a uno per uno e impariamo come contribuiscono alla funzionalità di questo comando.

Il parametro del segnale

Il primo è il segnale. I segnali sono cifre semplici che rappresentano un nome. Il comando kill può eseguire compiti diversi a seconda del segnale fornito. Gli utenti possono utilizzare più di 60 valori diversi per i segnali, che eseguono tutte attività separate e specifiche. Per visualizzare tutte queste opzioni, è possibile utilizzare il comando seguente:

$ Kill -l

Quando usi questo comando sul terminale di comando di Ubuntu, lo ottieni sullo schermo:

Come puoi vedere, ci sono un totale di 64 opzioni da cui puoi selezionare.

Sebbene ci siano più di 60 segnali diversi, due dei più comuni sono descritti di seguito.

  1. Sigkill (9): Come suggerisce il nome, questo comando uccide completamente il processo senza salvare i dati del programma. Questo comando deve essere usato solo come ultima risorsa.
  2. Sigterm (15): Questo genera un segnale di terminazione che chiude il programma in un modo per la sicurezza. Questo è anche il segnale predefinito.

I segnali possono essere ulteriormente specificati in 3 diversi modi descritti di seguito.

1. Possiamo specificare il segnale con la rispettiva cifra:

$ kill -9 pid

2. Possiamo specificare il segnale con il suo nome:

$ kill -sigkill pid

3. Possiamo specificare il segnale senza SIG nel nome.

$ kill -kill pid

Tutti questi comandi eseguono la stessa attività.

Il parametro PID

PID è il numero di identificazione del processo. Nei sistemi Linux e simili a UNIX, ogni processo svolto dal sistema viene assegnato un numero di identificazione del processo (indicato come PID di seguito). Per uccidere un processo, bisogna conoscere il suo PID. Per trovare il PID per un determinato processo, possiamo usare i seguenti comandi.

$ pidof [nome processo]
$ pGrep [nome processo]

Quando usi questi due comandi nel terminale di comando di Ubuntu, ottieni il seguente risultato.

Usando il comando Kill

Ora che hai capito la sintassi, possiamo eseguire il comando di uccisione. Per esempio, faremo uso di uccisioni su Thunderbird Mail - un programma preinstallato a Ubuntu. Prima identificheremo il suo PID e quindi finiremo il processo usando il segnale SIGterM.

Innanzitutto, apri il terminale di comando per Ubuntu. Una volta fatto, eseguire il seguente comando:

$ pgrep Thunderbird

Dovresti ottenere un output simile a quello che abbiamo ottenuto nell'immagine qui sotto:

Come ora sai, il PID di Thunderbird Mail esegue il seguente comando per terminare il processo.

$ kill -sigterm 7075

O

$ kill -15 7075

Quando si preme Invio, noterai che il processo e la sua finestra non esistono più. Puoi anche porre fine a più processi insieme inserendo contemporaneamente i PID dei processi.

$ kill -[segnale] pid1 pid2 ... pidn

Inoltre, gli utenti possono interrompere un processo utilizzando i comandi Kill e Pidof/PGREP nella stessa riga. La sintassi per tale accordo è:

$ kill -[segnale] $ pGrep [nome processo]

Motivi per cui l'uccisione potrebbe non funzionare

Come affermato in precedenza, il segnale predefinito inviato con il comando kill è sigterm. Sigterm sostanzialmente notifica il processo che dovrebbe ripulirsi ed essere terminato. Questo è il modo "bello" di interrompere o uccidere un processo. Tuttavia, con alcuni processi, è possibile che il modo carino non lo tagli.

Se noti che il processo che hai comandato di terminare è ancora in esecuzione dopo aver usato il segnale Sigterm, non preoccuparti, poiché questa è una complicazione comune che si verifica durante l'utilizzo di uccisioni. Come abbiamo detto, questo può accadere occasionalmente e con alcuni processi.

Per sbarazzarsi di questo problema, è possibile utilizzare il segnale Sigkill per terminare completamente il processo. Il segnale Sigkill consente al sistema di prendere in mano le cose. Quindi, se incontri una situazione così appiccicosa, puoi sempre uscirne usando il segnale Sigkill o -9.

È importante utilizzare Sigkill con parsimonia e quando presentato con una situazione che Sigterm non può risolvere. Sigterm rimane l'impostazione predefinita e il più sicuro; Quindi, il modo migliore per terminare un processo.

Il comando killall

Il comando Kill è originario sia di Linux che di altri sistemi operativi basati su Unix, ma il comando killall è per gli utenti solo Linux. Questo comando consente all'utente di terminare un processo utilizzando il nome del processo. Non è necessario trovare il PID del processo. La sintassi per il comando killall è:

$ killall -[segnale] [nome processo]

Questo comando può servire come una bella alternativa se, per qualche motivo, Kill non funziona anche per te dopo le soluzioni prescritte.

Conclusione

Questo articolo ha appreso il comando Kill, il suo scopo, la sintassi, i parametri e l'uso. Inoltre, abbiamo visto cosa potrebbe far funzionare correttamente il comando di uccisione e risolvere questi problemi. Spero che questa sia stata una lettura informativa e interessante per te e abbiamo risolto qualsiasi problema che stavi risuonando con questo comando.