Come uccidere un processo in Linux

Come uccidere un processo in Linux
Ogni sistema operativo Linux viene fornito con il comando Kill. L'unico scopo di questo strumento è terminare un processo target. È uno strumento potente che rende Linux abbastanza versatile, specialmente nei campi server e aziendali in cui una grande modifica/aggiornamento può avere effetto senza riavviare l'intera macchina. In questo articolo, metterò in mostra come uccidere un processo usando uccisione, pkill E uccidi tutti.

Uccidere un processo

Per uccidere un processo, useremo una manciata di strumenti: uccisione, pkill, E uccidi tutti. Tutti funzionano praticamente allo stesso modo.

Questi strumenti non terminano il processo da soli. Invece, inviano un segnale designato al processo di destinazione o ai gruppi di processo. Se non hai specificato alcun segnale specifico, Sigterm viene inviato come segnale predefinito. Tuttavia, ci sono una serie di segnali supportati, ad esempio Sigkill, Sighup ecc.

Ecco la struttura di comando di base per uccisione, pkill E uccidi tutti.

$ Kill
$ pkill
$ killall

Quando possibile, si consiglia di utilizzare uccisione.

Uccisione, pkill E uccidi tutti luoghi

Uccidere è il comando predefinito per terminare un processo.

$ kill - -help

È gestito dalla directory /usr /bin.

$ che uccidono

Il vantaggio è che consente anche l'accesso a Pkill, un altro comando simile a Kill che consente di terminare il processo in base al loro nome.

$ pkill - -help
$ quale pkill

Alcune app eseguono più processi dello stesso eseguibile. Se si desidera interrompere una serie di processi con lo stesso nome, usa lo strumento killall.

$ killall -elp
$ che killall

Elencare tutti i processi in esecuzione

La prima attività è identificare il PID (numero di identificazione del processo) e/o il nome del processo che desideri terminare. Per questo esempio, userò Firefox come processo target per terminare. Esegui il comando seguente per elencare tutti i processi in esecuzione sul sistema.

$ ps -a

Per la maggior parte dei compiti, dobbiamo conoscere il PID del processo target. Tuttavia, in determinate situazioni, l'utilizzo del nome del processo è più adatto.

Se conosci il nome esatto del processo target, puoi ottenere direttamente il PID utilizzando Pidof.

$ pidof

Un altro strumento interessante per afferrare le informazioni sul processo target è PGREP. È appositamente progettato allo scopo.

$ pgrep

Uccidi i segnali

Ora, diamo un'occhiata ai segnali che gli strumenti di uccisione supportano. È un elenco enorme. Certo, non tutti sono necessari per ogni singola situazione. In effetti, la maggior parte delle situazioni richiede solo una manciata di segnali.

Innanzitutto, diamo un'occhiata all'elenco che Kill supporta.

$ kill -l

Esistono 2 modi per definire quale segnale si desidera inviare. È possibile utilizzare il nome del segnale completo o il suo valore equivalente.

$ Kill -

O,

$ Kill -

I segnali più popolari sono Sighup (1), Sigkill (9) e Sigterm (15). Generalmente, Sigterm è il modo predefinito e più sicuro per terminare un processo target.

Nel caso di Pkill, il segnale supportato è lo stesso di Kill. Tuttavia, nel caso di Killall, il numero di segnali supportati e i nomi del segnale sono diversi.

$ killall -l

Uccidere un processo

Per uccidere un processo, abbiamo bisogno del PID di quel processo target. Supponendo che tu abbia il PID, esegui il seguente comando per ucciderlo.

$ Kill

Qui, Kill invierà il segnale predefinito Sigterm al PID (S). Se si desidera terminare più processi, menziona tutti i PID separati dallo spazio.

$ Kill

Specifichiamo quale segnale desideri inviare al bersaglio.

Vuoi terminare un processo utilizzando solo il suo nome? Usa pkill.

$ pkill

In alcuni casi, una particolare applicazione può avere troppi processi in esecuzione. Digitare tutti quei PIDS richiede tempo e faticoso. In tali scenari, useremo lo strumento killall. È abbastanza simile a Kill ma funziona con il nome del processo.

$ killall

Ad esempio, quando si esegue Firefox, inizia una manciata di processi. Per ucciderli tutti in una volta, esegui questo comando.

$ killall Firefox

Vuoi terminare tutti i processi in esecuzione sotto un determinato utente? Killall può fare il lavoro, nessun problema. Fai attenzione quando si esegue questo in quanto potrebbe abbattere il sistema e creare altri problemi. Non funzionerà se stai cercando di interrompere i processi in esecuzione in un utente diverso con un privilegio più elevato.

$ killall -u

Conflitto di autorizzazione

Le caratteristiche intrinseche della gerarchia utente Linux si applicano anche quando stai per terminare un'applicazione. Un utente non può interrompere i processi in esecuzione con un privilegio più elevato, solo un processo con un privilegio uguale/inferiore. Inoltre, un utente non può manipolare i processi in esecuzione in un utente diverso.

Ad esempio, consideriamo il comando sì. Se viene chiamato come utente attuale, può essere facilmente terminato usando Kill.

$ uccidere sì

E ora, se stava correndo sotto radice? Chiamare l'uccisione come utente attuale non funzionerà.

Allo stesso modo, se un processo era in esecuzione con un altro utente, non è possibile terminarlo da un altro account utente.

Pensieri finali

In questo articolo, sono stati mostrati solo le basi e l'uso comune di questi comandi. Questi strumenti di uccisione sono in grado di più di questo. Per avere una conoscenza approfondita delle capacità di qualsiasi strumento, ti consiglio di dare un'occhiata alla pagina Man.

$ uomo uccidere
$ man pkill

Godere!