La gestione dei processi in Linux può sembrare inizialmente scoraggiante per un nuovo amministratore di sistema (amministratore di sistema). Ma con una piccola spiegazione e dimostrazione, imparerai come trovare ed eseguire processi di uccisione di Linux è solo questione di usare strumenti da riga di comando come ps e kill .
In questo articolo imparerai i comandi per individuare processi in esecuzione ed errati, uccidere (terminare) processi in esecuzione, trovare processi in background e molto altro su qualsiasi sistema operativo Linux.
Entro la fine dell'articolo, gestirai i processi basati sui numeri di identificazione del processo (PID) dalla riga di comando come un professionista Linux. Continua a leggere per scoprire tutto sui comandi di gestione dei processi in Linux!
Prerequisiti
Questo articolo sarà una guida dettagliata su come gestire i processi in Linux. Se vuoi essere pratico, avrai bisogno di quanto segue:
- Un host Linux, che può essere una macchina virtuale o una macchina fisica.
- Per provare gli esempi di PowerShell, installa PowerShell 7.1.1 su un host Linux.
- Un account utente non root. Sebbene l'accesso come root non sia richiesto, ci sarà un esempio in cui l'utente root può terminare il processo in esecuzione di un altro utente.
La distribuzione di Linux, che scegli di utilizzare, dipende da te. Questo articolo sarà basato su Ubuntu 20.04 LTS. Tuttavia, i comandi sono standard per il sistema operativo Linux.
Pronto per iniziare? Bene, tuffiamoci.
Gestione dei processi in Linux
A volte, potresti imbatterti in uno scenario 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 una pianificazione. Quello script bash è configurato per essere eseguito come un altro utente tramite un cron job (programmatore di processi Linux).
A volte, questo script genera processi errati che possono far fallire lo script. Come si eliminano quei processi errati senza riavviare il sistema o arrestare lo script?
Nelle sezioni successive, analizzerai i comandi utilizzati per individuare e terminare o uccidere processi su un sistema Linux. Ogni sezione si baserà sull'ultima. Imparerai a conoscere ps , top , pgrep , kill e pkill comandi tutti nativi per Linux.
Come bonus, comandi equivalenti a PowerShell Get-Process e Stop-Process sono inclusi se i comandi nativi di Linux non sono nel tuo stile.
Strumenti per la localizzazione dei 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 scoprire come individuare i processi corretti per la terminazione.
Utilizzo di ps Comando per visualizzare le informazioni sul processo
Lo Stato del processo o ps comando visualizza le informazioni relative ai processi attivi su un sistema Linux. Puoi individuare un processo in esecuzione e persino processi in background con ps .
Il comando ps per impostazione predefinita, visualizzerà tutti i processi per l'identificazione effettiva dell'utente (EUID) dell'utente corrente. Esecuzione di ps comando, come mostrato di seguito, restituirà ogni processo in esecuzione che l'utente può terminare.
ps
Trovare informazioni di processo espanse utilizzando il top Comando
E se desideri trovare informazioni costantemente aggiornate sui processi in esecuzione e sulle metriche di sistema, in tal caso, puoi utilizzare il top comando. A differenza di ps , il top il comando aggiorna le informazioni sul processo sullo schermo in un intervallo prestabilito.
Quando esegui top comando, vedrai più di un semplice PID. I dettagli del processo includono le percentuali di CPU e memoria, Bei valori (priorità del processo di pianificazione della CPU) e la priorità del processo (PR) impostata dal kernel Linux.
Per un amministratore di sistema nuovo o esperto, top Il comando è spesso lo strumento principale per la gestione delle risorse e dei processi vitali del sistema. Come mostrato di seguito, il top l'output del comando mostra più informazioni sul processo rispetto a ps comando che include le metriche generali del sistema.
htop è una variante migliorata di top che include vari miglioramenti, come un output di terminale colorato.
Diciamo che desideri ispezionare la memoria o le risorse della CPU che un processo sta consumando. In tal caso, puoi utilizzare il p passaggio di top come mostrato di seguito.
top -p 2113
Forse è necessario visualizzare tutti i processi in esecuzione per un nome utente specifico. Il top comando offre il u passare per visualizzare solo i processi di un utente specifico. Come mostrato nell'esempio seguente, i PID corrispondono solo all'ID utente bkindle vengono visualizzati.
top -u bkindle
Individuazione di PID di processo specifici con pgrep Comando
Originariamente un comando Solaris, pgrep è stato portato per l'uso con Linux. Combinando la potenza di ricerca del grep comando e la gestione del processo di ps , pgrep offre flessibilità nel trovare il processo esatto a cui mirare.
Sebbene ps visualizza ulteriori informazioni, pgrep è progettato per restituire solo il PID dei processi restituiti. pgrep aiuta a localizzare il processo utilizzando i molti parametri di ricerca disponibili . Nell'esempio seguente, pgrep viene mostrato cercando qualsiasi processo che corrisponda a vmtoolsd .
pgrep vmtoolsd
Allo stesso modo, specifica un ID utente con il u passare per recuperare solo i processi associati a quell'utente specifico. Come mostrato di seguito, viene restituito un solo PID per l'utente bkindle e il vmtoolsd processo.
pgrep -u bkindle vmtoolsd
Trovare processi con Get-Process di PowerShell in Linux
I tipici comandi Linux funzionano alla grande, ma sapevi che PowerShell è in grado di gestire anche i processi Linux? Il Get-Process cmdlet funziona in modo simile a Linux ps comando e restituisce le informazioni sul processo. Ad esempio, forse devi trovare tutti i processi in esecuzione dall'utente corrente, bkindle . Come mostrato di seguito, trova tutti i PID (etichettati con ID da Get-Process ) dell'utente bkindle .
Get-Process -IncludeUserName |
Where-Object {$_.UserName -eq 'bkindle'} |
Select-Object -Property 'Id','UserName','ProcessName'
Correlati:come utilizzare PowerShell Where-Object per filtrare tutte le cose
Dopo aver imparato a localizzare diversi processi, continua a leggere per scoprire tutti i modi per terminare o uccidere un processo in Linux!
Processi di uccisione utilizzando i comandi di uccisione in Linux
Nelle sezioni precedenti, hai appreso come individuare il PID del processo a cui desideri inviare un segnale di kill utilizzando i comandi nativi di Linux e PowerShell. Le prossime sezioni spiegheranno come usare il kill e pkill programmi, i segnali associati e le opzioni della riga di comando.
Segnali Linux e gestione dei processi
I segnali sono il metodo utilizzato da Linux per comunicare con i processi in esecuzione nel sistema operativo. I tre segnali primari che il kill i comandi utilizzati per terminare i processi sono:
- 1 (SIGHUP) – Termina i programmi interattivi e fa sì che i demoni (servizi in background) rileggano i file di configurazione utilizzati dal processo.
- 9 (SIGKILL) – Forza l'uscita del processo senza eseguire attività di arresto regolari.
- 15 (SIGTERM) – Consente la chiusura regolare di un processo, ad esempio la chiusura di file aperti al termine. Questo è il segnale predefinito utilizzato quando non viene specificato alcun numero quando si utilizza il comando kill.
Sebbene questo articolo si concentri solo sui tre segnali principali utilizzati per i processi di uccisione, ci sono un totale di 64 segnali disponibili. Usa
kill -lper ottenere l'elenco dei segnali e il numero corrispondente.
Ora che hai compreso i tre segnali principali utilizzati per terminare un processo, scopri come terminare un processo nelle sezioni successive.
Utilizzando il kill Comando per terminare un processo
In questo prossimo esempio utilizzerai il kill comando. Fai finta per un momento di eseguire un'istanza di PowerShell, denominata pwsh e il PID assegnato è 22687. Di seguito è mostrato un modo per terminare questo processo.
- Usa
pgrep pwshper determinare il PID per il processopwsh, utilizzato nelkillcomando. - Usa
kill -s TERM 22687per terminare ilpwshelaborare con grazia. IlTERMil comando corrisponde al segnale 15 (SIGTERM) e viene indicato usando ilsparametro delkillcomando. - Usa la tua scelta di
top,psopgrepper verificare che il PID non sia più elencato.
Di seguito è mostrato un esempio del processo sopra da un terminale bash Ubuntu 20.04 LTS.

Il
killallcomando terminerà tutti i processi basati su un nome anziché su PID, il che può rendere questo comando piuttosto distruttivo se usato con noncuranza. Se scegli di usare questo comando, tuttavia, usa iliopzione per far sì che il comando chieda conferma.
Processi di uccisione per nome con pkill
Potresti aver notato che il kill il comando funziona solo con gli ID di processo. Ciò può rendere la conclusione di un processo un complicato processo a più fasi. Il pkill comando, incluso in procps e procps-ng pacchetti, termina un processo basato su un nome cercato.
Funzionalmente, il pkill il comando funge da wrapper attorno al pgrep programma. Il pkill comando invia un segnale specifico a ogni processo trovato invece di elencare solo i PID nel terminale. pkill differisce da kill in quel pkill può utilizzare solo il nome di un processo, non il PID.
Il
pkillcomando non è disponibile, per impostazione predefinita, in Ubuntu 20.04 LTS. Dovrai scaricare e installare l'applicazione. Per farlo, eseguisudo apt install mcollective-plugins-process -y.
Per terminare un processo usando pkill , esegui i seguenti passaggi:
- Usa
psper verificare che l'applicazione nano (un editor di testo della riga di comando) sia attualmente in esecuzione. Questo passaggio è facoltativo, ma è un controllo di sicurezza prima di terminare un processo. - Usa
pkill -9 nanoper terminare forzatamente l'applicazione nano.
Di seguito è mostrato un esempio del processo sopra da un terminale bash Ubuntu 20.04 LTS.
Uccidere un processo con Top Comando
Quando esegui top comando per visualizzare i processi in esecuzione, puoi terminare un determinato processo con la k battitura. Vedrai un prompt interattivo che richiede il PID di un processo da terminare.
Come mostrato di seguito, esegui top comando e premi k. Inserisci il PID che vuoi eliminare e premi Invio per terminare immediatamente il PID.
Successivamente, scopri un'altra alternativa ai comandi Linux nativi utilizzando PowerShell Stop-Process comando!
Utilizzo di PowerShell Stop-Process Comando per terminare un processo
Se i comandi nativi di Linux non fanno per te, PowerShell ti copre! Proprio come con kill comando, puoi terminare i processi usando il Stop-Process cmdlet in Linux. Ancora una volta, fai finta di eseguire un pwsh di PowerShell processo.
- Trova il PID con
Get-Process -ProcessName 'pwsh'e annota i PID da terminare. - Usa
Stop-Process -Id 29992,30014per terminare i molteplici processi restituiti. - Usa
Get-Process -ProcessName 'pwsh'e verifica i PID,29992e30014non sono più elencati, il che significa che sono stati chiusi.
Puoi anche usare
Get-Processe ilkillmetodo per terminare uno o più processi:(Get-Process -Id [PID]).Kill()o(Get-Process -Id [PID1,2,3,4]).Kill().Fai attenzione quando usi il
ProcessNameparametro. L'utilizzo di questo parametro si comporta in modo simile akillallcomando e chiuderà tutti i processi corrispondente al nome o ai nomi forniti.
Di seguito è riportato un esempio del processo precedente da un terminale bash Ubuntu 20.04 LTS.
Passaggi successivi
Ora dovresti conoscere i molti modi per trovare e terminare i processi in Linux! Per la tua prossima sfida, prova a terminare i processi in remoto utilizzando connessioni SSH o uccidendo i processi che potrebbero essere in esecuzione nei container.
Correlato:un ragazzo Windows in un mondo Linux:configurazione di SSH in Linux