Gestire i processi in Linux può sembrare intimidatorio per un nuovo amministratore di sistema (sysadmin) all’inizio. Ma con un po’ di spiegazione e dimostrazione, imparerai che trovare ed eseguire il kill dei processi Linux è solo una questione di utilizzo di strumenti da riga di comando come ps
e kill
.
In questo articolo, imparerai i comandi per individuare i processi in esecuzione e quelli errati, terminare i processi in esecuzione, individuare i processi in background e molto altro su qualsiasi sistema operativo Linux.
Alla fine dell’articolo, sarai in grado di gestire i processi basandoti sui numeri di identificazione dei processi (PID) dalla riga di comando come un professionista di Linux. Continua a leggere per conoscere tutti i comandi di gestione dei processi in Linux!
Prerequisiti
Questo articolo sarà una guida su come gestire i processi in Linux. Se vuoi metterti alla prova, avrai bisogno dei seguenti elementi:
- A Linux host, which can be a virtual machine or a physical machine.
- Per provare gli esempi di PowerShell, installa PowerShell 7.1.1 su un host Linux.
- A non-root user account. While root access is not required, there will be an example where the root user can kill the running process of another user.
La distribuzione di Linux che scegli di utilizzare è a tua discrezione. Questo articolo si baserà su Ubuntu 20.04 LTS. Tuttavia, i comandi sono standard per il sistema operativo Linux.
Pronto per iniziare? Ottimo, immergiamoci.
Gestione dei processi in Linux
Di tanto in tanto, potresti trovarvi in una situazione in cui è necessario interrompere un processo in esecuzione su un sistema Linux. Ad esempio, potresti avere uno script bash che viene eseguito in base a un programma cron (scheduler di processi Linux).
A volte, questo script genera processi errati che possono far fallire lo script. Come si possono terminare quei processi errati senza riavviare il sistema o interrompere lo script?
Nelle prossime sezioni, verranno esaminati i comandi utilizzati per individuare e terminare o kill i processi su un sistema Linux. Ogni sezione si baserà sulla precedente. Imparerai i comandi ps
, top
, pgrep
, kill
e pkill
, tutti nativi di Linux.
Come bonus, sono inclusi i comandi equivalenti di PowerShell Get-Process
e Stop-Process
se i comandi nativi di Linux non sono di tuo gradimento.
Strumenti per individuare i processi
Prima di terminare un processo, è necessario individuare il processo corretto da prendere di mira. Il PID univoco consente un targeting preciso. Continua a leggere per imparare come individuare i processi corretti da terminare.
Utilizzo del comando ps
per visualizzare le informazioni sui processi
Il comando Stato del processo o comando ps
visualizza informazioni relative ai processi attivi su un sistema Linux. Puoi individuare un processo in esecuzione e persino i processi in background con il comando ps
.
Il comando ps
visualizzerà, per impostazione predefinita, tutti i processi per l’identificazione utente effettiva (EUID) dell’utente corrente. Eseguire il comando ps
, come mostrato di seguito, restituirà ogni processo in esecuzione che l’utente può terminare.

bkindle
.Trovare informazioni dettagliate sul processo usando il comando top
Cosa fare se si desidera trovare informazioni costantemente aggiornate sui processi in esecuzione e sulle metriche di sistema, in tal caso, è possibile utilizzare il comando top
. A differenza di ps
, il comando top
aggiorna le informazioni sul processo sullo schermo ad intervalli prestabiliti.
Quando si esegue il comando top
, si vedranno più informazioni oltre al PID. Con i dettagli del processo sono inclusi percentuali di CPU e memoria, Valori Nice (priorità di pianificazione del processo CPU), e la priorità del processo (PR) impostata dal kernel Linux.
Per un amministratore di sistema nuovo o esperto, il comando top
è spesso lo strumento principale per gestire risorse di sistema cruciali e processi. Come mostrato di seguito, l’output del comando top
visualizza più informazioni sul processo rispetto al comando ps
, inclusi i dati complessivi sulle metriche di sistema.

top
command on Ubuntu Desktop 20.04 LTS showing all running PID’s.htop
è una variante migliorata di top
che include vari miglioramenti, come un output terminale colorato.
Diciamo che vuoi ispezionare la memoria o le risorse CPU che un processo sta consumando. In tal caso, puoi utilizzare l’interruttore p
di top
come mostrato di seguito.

Forse hai bisogno di visualizzare tutti i processi in esecuzione per un nome utente specifico. Il comando top
offre l’interruttore u
per visualizzare solo i processi di un utente specifico. Come si vede nell’esempio seguente, vengono mostrati solo i PID corrispondenti all’ID utente bkindle
.

top
command displaying only processes for the user bkindle
.Individuazione dei PID dei processi specifici con il comando pgrep
Originariamente un comando Solaris, pgrep
è stato portato per l’uso con Linux. Combinando la potenza di ricerca del comando grep
e la gestione dei processi di ps
, pgrep
offre flessibilità nel trovare il processo esatto da individuare.
Anche se ps
visualizza più informazioni, pgrep
è progettato per restituire solo il PID dei processi restituiti. pgrep
aiuta nella individuazione del processo utilizzando molti parametri di ricerca disponibili. Nell’esempio seguente, pgrep
viene mostrato alla ricerca di qualsiasi processo corrispondente a vmtoolsd
.

pgrep
to obtain all PIDs associated with vmtoolsd
.Allo stesso modo, specifica un ID utente con l’interruttore u
per recuperare solo i processi associati a quel determinato utente. Come mostrato di seguito, viene restituito solo un singolo PID per l’utente bkindle
e il processo vmtoolsd
.

vmtoolsd
process associated with the user bkindle
.Trovare i processi con il comando Get-Process
di PowerShell in Linux
I comandi tipici di Linux funzionano molto bene, ma sapevi che PowerShell è in grado di gestire anche i processi di Linux? Il cmdlet Get-Process
funziona in modo simile al comando ps
di Linux e restituisce informazioni sui processi. Ad esempio, forse hai bisogno di trovare tutti i processi in esecuzione dall’utente corrente, bkindle
. Come mostrato di seguito, trova tutti i PID (etichettati come ID da Get-Process
) dell’utente bkindle
.

Get-Process
cmdlet.Correlato: Come usare l’oggetto Where-Object di PowerShell per filtrare tutto
Dopo aver imparato come individuare diversi processi, continua a leggere per scoprire tutti i modi per terminare o uccidere un processo in Linux!
Uccidere i processi usando i comandi Kill in Linux
Nelle sezioni precedenti, hai imparato come individuare il PID del processo a cui desideri inviare un segnale di kill utilizzando comandi nativi di Linux e di PowerShell. Le sezioni successive spiegheranno come utilizzare i programmi kill
e pkill
, i relativi segnali e gli interruttori della riga di comando.
Segnali di Linux e gestione dei processi
I segnali sono il metodo che Linux utilizza per comunicare con i processi in esecuzione nel sistema operativo. I tre segnali principali che il comando kill
utilizza per terminare i processi sono:
- 1 (SIGHUP) – Termina i programmi interattivi e fa sì che i daemon (servizi in background) leggano nuovamente i file di configurazione utilizzati dal processo.
- 9 (SIGKILL) – Forza il processo ad uscire senza eseguire operazioni di chiusura corrette.
- 15 (SIGTERM) – Consente a un processo di terminare correttamente, ad esempio chiudendo i file aperti al termine. Questo è il segnale predefinito utilizzato quando non viene specificato alcun numero durante l’utilizzo del comando kill.
Anche se questo articolo si concentra solo sui tre segnali principali utilizzati per terminare i processi, esistono in totale 64 segnali disponibili. Utilizza il comando
kill -l
per ottenere l’elenco dei segnali e il loro numero corrispondente.
Ora che hai compreso i tre segnali principali utilizzati per terminare un processo, scopri come terminare un processo nelle sezioni successive.
Utilizzo del comando kill
per terminare un processo
In questo prossimo esempio, userai il comando kill
. Fingiamo per un attimo di eseguire un’istanza di PowerShell, chiamata pwsh
, e l’ID di processo assegnato è 22687. Un modo per terminare questo processo è mostrato di seguito.
- Utilizza
pgrep pwsh
per determinare l’ID di processo del processopwsh
, utilizzato nel comandokill
. - Usa il comando
kill -s TERM 22687
per terminare il processopwsh
in modo delicato. Il comandoTERM
corrisponde al segnale 15 (SIGTERM) ed è indicato utilizzando il parametros
del comandokill
. - Usa il tuo comando preferito tra
top
,ps
opgrep
per verificare che il PID non sia più elencato.
Di seguito è mostrato un esempio del processo sopra descritto da un terminale bash Ubuntu 20.04 LTS.

kill
and associated commands to terminate the pwsh
process.Il comando
killall
terminerà tutti i processi basati su un nome invece che su un PID, il che può rendere questo comando piuttosto distruttivo se usato incautamente. Se decidi di utilizzare questo comando, tuttavia, usa l’opzionei
per far sì che il comando chieda conferma.
Terminazione dei processi per nome con pkill
Potresti aver notato che il comando kill
funziona solo con gli ID dei processi. Questo può rendere la terminazione di un processo un processo complicato e multistep. Il comando pkill
, incluso nei pacchetti procps e procps-ng, termina un processo basato su un nome cercato.
Funzionalmente, il comando pkill
funge da wrapper attorno al programma pgrep
. Il comando pkill
invia un segnale specificato ad ogni processo trovato anziché elencare solo i PID nel terminale. pkill
differisce da kill
nel senso che pkill
può utilizzare solo il nome di un processo, non il PID.
Il comando
pkill
non è disponibile, di default, in Ubuntu 20.04 LTS. Dovrai scaricare e installare l’applicazione. Per farlo, eseguisudo apt install mcollective-plugins-process -y
.
Per terminare un processo utilizzando pkill
, esegui i seguenti passaggi:
- Usa
ps
per verificare che l’applicazione nano (un editor di testo a riga di comando) sia attualmente in esecuzione. Questo passaggio è opzionale, ma una verifica di sicurezza prima di terminare un processo. - Usa
pkill -9 nano
per terminare forzatamente l’applicazione nano.
Di seguito è riportato un esempio del processo sopra descritto da un terminale bash di Ubuntu 20.04 LTS.

pkill
command to forcefully terminate the nano process.Terminare un Processo con il Comando Top
Quando esegui il comando top
per visualizzare i processi in esecuzione, puoi terminare un dato processo con il tasto k. Vedrai un prompt interattivo che chiede il PID di un processo da terminare.
Come mostrato di seguito, esegui il comando top
e premi k. Inserisci il PID che desideri terminare e premi il tasto Invio per terminare immediatamente il PID.

top
to specify a process to terminate using the k keystroke.Successivamente, impara un’altra alternativa ai comandi nativi di Linux utilizzando il comando Stop-Process
di PowerShell!
Utilizzare il comando PowerShell Stop-Process
per terminare un processo
Se i comandi nativi di Linux non sono di tuo gradimento, PowerShell è la soluzione! Proprio come con il comando kill
, puoi terminare i processi utilizzando il Stop-Process
cmdlet in Linux. Ancora una volta, fai finta di eseguire un processo PowerShell pwsh
.
- Trova il PID con
Get-Process -ProcessName 'pwsh'
e annota i PID da terminare. - Usa
Stop-Process -Id 29992,30014
per terminare i processi multipli restituiti. - Usa
Get-Process -ProcessName 'pwsh'
e verifica i PID,29992
e30014
non sono più elencati, il che significa che sono stati terminati.
Puoi anche utilizzare
Get-Process
e il metodokill
per terminare uno o più processi:(Get-Process -Id [PID]).Kill()
o(Get-Process -Id [PID1,2,3,4]).Kill()
.Esercita cautela quando utilizzi il parametro
ProcessName
. Utilizzare questo parametro comporta un comportamento simile al comandokillall
, e terminerà tutti i processi che corrispondono ai nomi forniti.
Di seguito è riportato un esempio della procedura precedente da un terminale bash di Ubuntu 20.04 LTS.

Stop-Process
to kill processes in Linux.Passaggi successivi
Dovresti ora conoscere i molti modi per trovare e terminare processi in Linux! Per la tua prossima sfida, prova a terminare processi in modo remoto usando connessioni SSH o terminando processi che potrebbero essere in esecuzione nei contenitori.
Correlato: Un ragazzo Windows in un mondo Linux: Configurazione di SSH in Linux