Processo di uccisione di Linux di PID

Processo di uccisione di Linux di PID
In Linux (e nella maggior parte dei moderni sistemi operativi), la terminazione di un processo richiede con forza l'invio di un segnale terminale appropriato. Esistono diversi modi per inviare un segnale di terminazione a un processo particolare. Se conosci il PID (ID processo) del processo di destinazione, il comando Kill può inviare direttamente il segnale di terminazione ad esso.

In questa guida, dimostreremo come uccidere un processo Linux dal suo PID.

PID in Linux

Il termine PID è un acronimo di "numero di identificazione del processo". A ogni processo viene assegnato un PID unico nel momento in cui sono creati sul sistema. Il PID numero 1 è assegnato a SystemD (init, per sistemi più vecchi). In sostanza, SystemD o INIT è sempre il primo processo per iniziare su Linux ed è genitore di tutti gli altri processi.

Ci sono un paio di strumenti che possiamo usare per ottenere il PID di un processo target. Il metodo più popolare (e consigliato) per ottenere il PID utilizza il comando PS. È uno strumento integrato disponibile su tutti i sistemi Linux. Scopri di più in modo approfondito sul comando PS in Linux.

Per stampare tutti i processi in esecuzione con il loro PID, eseguire il seguente comando PS:

$ ps -ef

Per una navigazione più facile, tubi l'uscita al comando inferiore:

$ ps -ef | meno

Si noti che la colonna PID elenca tutti i processi ordinati per PID. È il valore che stiamo cercando.

Alla ricerca di un processo particolare con un nome specifico? Quindi il comando grep è tuo amico. Può cercare un modello particolare nel file dato (stdout, in questo caso). Ad esempio, il seguente comando cercherà qualsiasi processo Firefox in esecuzione:

$ ps -ef | Grep Firefox

Se conosci il nome del processo di destinazione, allora possiamo usare il comando PIDOF per ottenere direttamente il PID.

$ Pidof Firefox

Un altro comando interessante per fare il lavoro è pgrep. Opera direttamente nell'elenco dei processi attualmente in esecuzione. Il comando PGREP prenderà il nome del processo come parametro e stamperà il PID di qualsiasi voce corrispondente.

$ PGREP Firefox

Nota il PID del processo target. La prossima sezione di questo articolo mostrerà la risoluzione del processo con il suo PID.

Uccidere un processo

Uccidere un processo richiede l'invio di un segnale terminale al processo. Tuttavia, non esiste un singolo segnale di terminazione. Ce ne sono molti, ognuno che agisce in modo leggermente diverso rispetto agli altri. Quindi, è fondamentale capirli prima.

Segnali di uccisione di Linux

Il comando Kill in Linux è responsabile dell'invio dei segnali di terminazione. Per una spiegazione dettagliata, dai un'occhiata a questa guida sul comando di uccisione Linux. In breve, dici al comando di uccisione quale segnale inviare a quale processo (usando PID).

Per ottenere l'elenco completo di tutti i segnali di terminazione, eseguire il seguente comando:

$ kill -l

Per la maggior parte, tuttavia, ne avremo solo una manciata. Qui ci sono spiegazioni dettagliate dei segnali di terminazione più comuni che dovresti conoscere.

  • Sigup (1) - Il terminale di controllo è appeso o il processo di controllo è morto. In tale situazione, Sigup ricaricherà i file di configurazione e aprirà i file di registro.
  • Sigkill (9) - È un segnale di uccisione diretta al processo target. Dovrebbe essere usato come ultima risorsa per terminare un processo. Se un processo viene terminato utilizzando Sigkill, non salverà i dati o la pulizia al termine del processo.
  • Sigterm (15) - Invia un segnale di terminazione al processo di destinazione. Sigterm è il segnale predefinito da inviare. È anche considerato il metodo più sicuro per terminare un processo.

Uccidere un processo usando Kill

Questo è il modo predefinito per terminare un processo target su Linux. Il comando Kill segue la seguente struttura di comando:

$ Kill -

Ad esempio, per inviare Sigterm a un processo, il comando sembrerebbe così:

$ kill -15

Allo stesso modo, se si desidera inviare Sigkill, quindi utilizzare il seguente comando:

$ kill -9

Ulteriori informazioni sul comando Linux Kill con spiegazioni ed esempi approfonditi.

Uccidere più processi usando killall

Il comando killall atti simili a kill. Tuttavia, invece di definire un PID specifico, utilizza il nome del processo e invia il segnale di terminazione specificato a tutti i processi che corrispondono al nome.

La struttura di comando di Killall sembra così:

$ killall -

Ad esempio, il seguente comando killall invierà Sigterm a tutti i processi Firefox in esecuzione:

$ killall -15 Firefox

Dai un'occhiata a questa guida sul comando Linux Killall per spiegazioni dettagliate con esempi. Si consiglia inoltre di dare un'occhiata alla pagina Man di Killall:

$ man killall

Uccidere più processi usando Pkill

Simile al comando killall, Pkill può anche cercare processi in base al nome e inviare il segnale di terminazione specificato. Anche la struttura di comando è quasi simile;

$ pkill -

Ad esempio, utilizzare il seguente comando Pkill per terminare il processo Firefox con Sigterm:

$ PKILL -15 Firefox

Come sempre, controlla la pagina Man di Pkill per spiegazioni approfondite con tutte le sfumature:

$ man pkill

Pensieri finali

Questa guida mette in mostra vari modi di uccidere un processo dal suo PID. Dimostra anche metodi alternativi usando il nome del processo anziché il PID. È sempre meglio avere più strumenti a tua disposizione. Qui, abbiamo usato comandi PS e PGREP per trovare i comandi PID e Kill, Pkill e Killall per l'uccisione di processi.

In molte situazioni, potresti voler sbarazzarti di fastidiosi processi di fondo che non funzionano con malfunzionamento. Ulteriori informazioni sull'identificazione dei processi di fondo in Linux. Quindi, seguendo i metodi in questa guida, puoi facilmente sbarazzarti di quelli indesiderati.
Felice calcolo!