Ricerca nel sito web

Come uccidere il processo Linux usando Kill, Pkill e Killall


In Linux, terminare un processo significa terminare o interrompere l'esecuzione di un programma in esecuzione. A ogni processo in esecuzione viene assegnato un numero identificativo univoco noto come ID processo (PID), che aiuta il sistema a tenere traccia dei processi attualmente attivi.

In questo articolo scopriremo il processo di kill di Linux e come trovare e terminare un processo utilizzando diversi strumenti e comandi in Linux.

Qual è il processo Linux

In termini semplici, un processo è come un programma attualmente in esecuzione su un sistema e ogni processo ha il proprio numero ID (PID) speciale. Tuttavia, a volte un programma o un processo in esecuzione può comportarsi in modo anomalo o smettere di rispondere o utilizzare troppe risorse di sistema.

Quando ciò accade, dobbiamo interrompere o “uccidere” il processo ed è qui che il comando kill torna utile.

Cos'è il comando di uccisione

Il comando "kill" è un'utilità cruciale che consente agli utenti di inviare segnali (interrompere o terminare) ai processi attualmente in esecuzione, istruendoli a uscire con garbo o terminare forzatamente.

Il comando kill è utile quando devi gestire e controllare le attività di diversi programmi sul tuo sistema Linux come:

  • Per interrompere qualsiasi processo automatizzato.
  • Interrompere un processo avviato per sbaglio.
  • Per interrompere un processo che utilizza troppa memoria.
  • Per terminare forzatamente qualsiasi processo in esecuzione in Linux.
  • Per interrompere un processo in esecuzione in background.

L'uso del comando kill da /usr/bin fornisce alcune funzionalità extra per terminare un processo in base al nome del processo utilizzando pkill, che identifica i processi in base a i loro nomi.

Come trovare l'ID processo o il nome del processo

Prima di terminare un processo in esecuzione, è essenziale identificarne l'ID processo (PID) o il nome utilizzando il seguente comando ps che visualizza informazioni su tutti i processi in esecuzione sul sistema con il relativo PID (ID processo) e altre informazioni.

ps -ef

Se desideri trovare il nome di un processo specifico PID, puoi utilizzare un comando grep che elencherà tutti i processi in esecuzione sul sistema e filtrerà i risultati per mostrare solo quelli contenenti il termine “mariadb“.

ps -ef | grep mariadb

In alternativa, puoi trovare direttamente il PID di un processo per nome utilizzando il comando pgrep come mostrato.

pgrep mariadb

Come uccidere un processo in Linux

Prima di uccidere, interrompere o terminare un processo, pensa alle autorizzazioni. Se sei un utente root, puoi interrompere qualsiasi processo, ma se sei un utente normale, devi aggiungere un "sudo" prima del comando o passare a un utente root con " su” per utilizzare il comando di terminazione.

La sintassi comune per il comando kill è:

kill [signal or option] PID(s)
OR
sudo kill [signal or option] PID(s)

Per un comando kill un nome segnale potrebbe essere:

Chiaramente dal comportamento di cui sopra:

  • SIGTERM è il modo predefinito e più sicuro per terminare un processo.
  • SIGHUP è un modo meno sicuro di terminare un processo rispetto a SIGTERM.
  • SIGKILL è il modo più pericoloso tra i tre precedenti per terminare un processo che termina un processo senza salvare.

In Linux, esistono diversi segnali che puoi utilizzare per arrestare, terminare o mettere in pausa i processi. Puoi elencare tutti i segnali di uccisione disponibili con i loro nomi e numeri corrispondenti utilizzando il seguente comando, che elencherà

kill -l

Sebbene siano disponibili più segnali, nella maggior parte dei casi utilizziamo solo SIGKILL (9) e SIGTERM (15).

Per terminare un processo, dobbiamo conoscere l'ID processo di un processo. Un processo è un'istanza di un programma. Ogni volta che si avvia un programma, viene generato automaticamente un PID univoco per quel processo.

Ogni processo in Linux ha un pid. Il primo processo che si avvia all'avvio del sistema Linux è il – processo init, quindi nella maggior parte dei casi gli viene assegnato il valore "1".

Init è il processo principale e non può essere terminato in questo modo, il che garantisce che il processo principale non venga interrotto accidentalmente. Init decide e si lascia uccidere, dove kill è semplicemente una richiesta di spegnimento.

Prima di procedere ed eseguire un comando kill, è necessario notare alcuni punti importanti:

  • Un utente può terminare tutti i suoi processi.
  • Un utente non può interrompere il processo di un altro utente.
  • Un utente non può terminare i processi utilizzati dal sistema.
  • Un utente root può interrompere il processo a livello di sistema e il processo di qualsiasi utente.

Per terminare il processo mariadb PID, utilizza il comando kill come mostrato.

kill -9 3383

Il comando precedente interromperà il processo che ha pid=3383, dove PID è un valore numerico del processo.

Un altro modo per eseguire la stessa funzione può essere riscritto come.

kill -SIGTERM 3383

Allo stesso modo "kill -9 PID" è simile a "kill -SIGKILL PID" e viceversa.

Per confermare che il processo è terminato, puoi utilizzare nuovamente il comando ps.

ps -ef | grep mariadb

Come uccidere più processi in Linux

Per terminare più processi in Linux utilizzando i relativi ID di processo (PID), puoi utilizzare il comando kill in combinazione con i numeri PID pertinenti.

Innanzitutto, identifica i PID dei processi che desideri terminare utilizzando il comando ps o pgrep.

ps aux | grep apache2
OR
pgrep apache2

Una volta ottenuti i PID, utilizza il comando kill per terminarli.

kill -9 PID1 PID2 PID3

Come uccidere un processo in Linux utilizzando il nome del processo

Per terminare un processo utilizzando il nome del processo, utilizzeremo il comando pkill, che è una versione del comando kill che consente di menzionare il nome del processo o uno schema per individuare un processo.

Devi essere consapevole del nome del processo, prima di uccidere, e inserire un nome di processo sbagliato potrebbe fregarti.

pkill mysqld

Cosa succede se un processo ha troppe istanze e diversi processi figli, abbiamo un comando "killall" che prende il nome del processo come argomento al posto del numero del processo.

Come uccidere un processo in Linux utilizzando il comando Killall

La principale distinzione tra killall e kill è che killall può terminare un processo tramite il suo nome, mentre il comando kill si basa sull'ID del processo (pid).

Per terminare tutte le istanze mysql insieme ai processi figli, utilizzare il comando come segue.

killall mysqld
OR
pkill mysqld

Puoi sempre verificare lo stato del processo se è in esecuzione o meno, utilizzando uno dei comandi seguenti.

systemctl status mysql
pgrep mysql
ps -aux | grep mysql

Gli strumenti di monitoraggio dei sistemi grafici Linux come htop o gnome-system-monitor forniscono un'interfaccia user-friendly per trovare e terminare i processi.

Conclusione

Per ora è tutto da parte mia. Tornerò presto con un altro argomento interessante e informativo. Fino ad allora, restate sintonizzati e connessi a Tecmint e prendetevi cura della vostra salute. Non dimenticare di condividere il tuo prezioso feedback nella sezione commenti.