GNU/Linux >> Linux Esercitazione >  >> Linux

Come uccidere un processo in Linux? Comandi per terminare

Introduzione

Se un processo Linux non risponde o consuma troppe risorse, potrebbe essere necessario interromperlo.

La maggior parte dei processi ha i propri metodi di arresto. Sfortunatamente, i processi possono non funzionare correttamente e non permettersi di chiudersi. Se un processo in background non risponde, diventa necessario utilizzare un comando per terminarlo.

Ecco una guida completa su come terminare un processo Linux utilizzando la riga di comando.

Quali processi puoi eliminare in Linux?

Prima di uccidere o terminare un processo, devi considerare le autorizzazioni.

Un utente root può uccidere tutti i processi. Puoi aggiungere sudo prima di un comando per eseguirlo come root o ottenere una shell di root con su . Quindi esegui il comando.

L'uccisione di un processo invia un messaggio di terminazione al processo specificato. Esistono diversi tipi di messaggi di terminazione, tra cui:

  • SIGKILL SIGKILL è il modo migliore per uccidere un processo. Ucciderà sempre un processo e ucciderà il processo all'improvviso, generando un errore irreversibile. SIGKILL dovrebbe sempre funzionare. Se non funziona, il sistema operativo è guasto.
  • SIGTERM SIGTERM tenta di terminare un processo, ma a differenza di SIGKILL può essere bloccato o altrimenti gestito. Può essere considerato un modo più delicato per tentare di terminare un processo.

Per la maggior parte degli scopi, SIGKILL sarà il metodo più rapido ed efficace per terminare il processo.

Passaggio 1:Visualizza i processi Linux in esecuzione

La top comando è il modo più semplice per ottenere una panoramica completa dei processi attualmente in esecuzione.

Per visualizzare un elenco di tutti i processi attualmente in esecuzione, utilizzare il comando:

top

Il comando in alto rivelerà ID processo e utenti, oltre alla quantità di memoria e potenza CPU utilizzata da ciascun processo.

Per terminare i processi direttamente dalla parte superiore interfaccia, premi k e inserisci l'ID del processo.

Per uscire dalla parte superiore interfaccia, premi q .

Fase 2:individua il processo da uccidere

Prima di poter uccidere un processo, devi trovarlo. Esistono diversi modi per cercare un processo in Linux. I processi possono essere individuati tramite un nome processo (o un nome processo parziale) o un ID processo (noto anche come "pid").

Trova un processo con il comando ps

Il ps comando mostra informazioni simili a top , anche se non sarà sotto forma di interfaccia. Invece, il ps comando fornisce un elenco completo dei processi in esecuzione, formattato in base ai tag aggiunti.

ps <options>

Le opzioni più comuni da aggiungere a questo sono "-aux":

  • -a . Visualizza i processi di tutti gli utenti anziché solo dell'utente corrente.
  • -u . Fornire informazioni dettagliate su ciascuno dei processi
  • -x . Includi processi controllati non dagli utenti ma dai demoni.

Ad esempio, il comando ps -aux restituirà un elenco dettagliato dei processi di tutti i processi.

Trovare il PID con pgrep o pidof

Il comando Linux pgrep è un modo più complesso di trovare un processo. Questo comando restituirà processi basati su criteri di selezione specifici, noti come pattern. Il modello è un'espressione regolare, come a* , dove * sarebbe un carattere jolly.

pgrep <options> <pattern>

Ecco le opzioni che possono essere utilizzate con questo comando:

  • -l . Elenca sia i nomi di processo che i PID.
  • -n . Restituisci il processo più recente.
  • -o . Restituisci il processo più vecchio.
  • -u . Trova solo i processi che appartengono a un utente specifico.
  • -x . Trova solo processi che corrispondono esattamente al modello specificato.

Il comando pgrep -u root visualizza tutti i processi di proprietà di root. Il comando pgrep -u root 'a*' restituisce i processi di proprietà di root che iniziano con la lettera "a".

Il pidof comando viene utilizzato per trovare l'ID di un processo, a condizione che tu conosca il nome del processo.

pidof <options> <program>

È possibile includere alcune opzioni, come:

  • -c . Restituisce solo PID all'interno di una singola directory principale.
  • -o . Ometti alcuni PID (includi i processi da omettere dopo il flag).
  • -s . Restituisci un solo PID.
  • -x . Restituisce anche i PID delle shell che eseguono script.

Fase 3:usa le opzioni del comando di uccisione per terminare un processo

Esistono diversi metodi per terminare un processo in Linux, a seconda che tu conosca il nome del processo in esecuzione, il pid del processo o solo da quanto tempo il processo è in esecuzione.

uccidi tutti i comandi

Il killall comando viene utilizzato per terminare i processi in base al nome. Per impostazione predefinita, invierà un segnale SIGTERM. Il killall comando può uccidere più processi con un singolo comando.

killall <process>

Diverse opzioni possono essere utilizzate con killall comando:

  • -e . Trova una corrispondenza esatta per il nome del processo.
  • -I . Ignora maiuscole e minuscole quando tenti di trovare il nome del processo.
  • -i . Chiedi ulteriore conferma quando termina il processo.
  • -u . Termina solo i processi di proprietà di un utente specifico.
  • -v . Segnala se il processo è stato terminato con successo.

Oltre ai processi di uccisione basati sul nome, il killall comando può essere utilizzato anche per uccidere in base all'età del processo, utilizzando i seguenti comandi:

  • -o . Usa questo flag con una durata per terminare tutti i processi che sono stati eseguiti per più di quel periodo di tempo.
  • -y . Usa questo flag con una durata per terminare tutti i processi che sono stati eseguiti per meno di quel periodo di tempo.

Il killall -o 15m il comando ucciderà tutti i processi che sono più vecchi di 15 minuti, mentre il killall -y 15m comando ucciderà tutti i processi che durano meno di 15 minuti.

Comando pkill

Il pkill il comando è simile a pgrep comando, in quanto ucciderà un processo in base al nome del processo, oltre ad altri fattori di qualificazione. Per impostazione predefinita, pkill invierà il segnale SIGTERM.

pkill <options> <pattern>

le opzioni di pkill includono:

  • -n . Elimina solo i processi più recenti scoperti.
  • -o . Uccidi solo il più vecchio dei processi scoperti.
  • -u . Termina solo i processi che sono di proprietà dell'utente selezionato.
  • -x . Termina solo i processi che corrispondono esattamente al modello.
  • -signal . Invia un segnale specifico al processo, anziché SIGTERM.

uccidi il comando

Se conosci un ID processo, puoi terminarlo con il comando:

kill <processID>

L'kill comando ucciderà un singolo processo alla volta con l'ID processo specificato. Invierà un SIGTERM segnale che indica a un processo di fermarsi. Attende che il programma esegua la sua routine di spegnimento.

Il -signal il comando può essere utilizzato per specificare un segnale che non è SIGTERM.

uccidi -9 comando Linux

kill -9 è un comando utile quando è necessario arrestare un servizio che non risponde. Eseguilo in modo simile a un normale kill comando:

kill -9 <processID>

Oppure

kill -SIGKILL <processID>

Il kill -9 il comando invia un SIGKILL segnale che indica a un servizio di chiudere immediatamente. Un programma che non risponde ignorerà un kill comando, ma si spegnerà ogni volta che un kill -9 viene impartito il comando. Utilizzare questo comando con cautela. Ignora la routine di spegnimento standard, quindi tutti i dati non salvati andranno persi.

Il tuo sistema operativo non funziona correttamente se un segnale SIGKILL non interrompe un servizio.

Comando superiore

La top comando fornisce un'interfaccia attraverso la quale un utente può navigare attraverso i processi attualmente in esecuzione.

top

Per terminare un processo specifico, inserisci k dall'interfaccia superiore e quindi immettere l'ID di processo desiderato.

comando xkill

Il xkill command è un tipo speciale di comando che chiude la connessione di un determinato server ai client.

xkill <resource>

Se un server ha aperto una serie di processi indesiderati, xkill interromperà questi processi.

Se xkill viene eseguito senza specificare una risorsa, quindi si aprirà un'interfaccia che consente all'utente di selezionare una finestra da chiudere.

Principali suggerimenti sull'interruzione di un processo Linux

  • Quando un processo non può essere chiuso in nessun altro modo, può essere terminato manualmente tramite riga di comando.
  • Per terminare un processo in Linux, devi prima trovare il processo. Puoi utilizzare il top , ps , pidof o pgrep comandi.
  • Una volta trovato il processo che vuoi eliminare, puoi ucciderlo con il killall , pkill , kill , xkill o top comandi.
  • Quando si interrompe un processo, è possibile inviare un segnale di terminazione di SIGHUP, SIGKILL o SIGTERM.
  • Devi avere l'autorizzazione per terminare un processo, che puoi ottenere tramite l'uso di sudo comando.

Linux
  1. Come uccidere un processo zombie su Linux

  2. Come trovare e uccidere il processo Zombie in Linux

  3. Comandi Linux:come manipolare la priorità del processo

  4. Come eliminare i processi in esecuzione in Linux

  5. Come uccidere un processo su Linux usando il comando?

Come KILL un processo su Linux

Come uccidere o terminare un processo Linux:la guida definitiva

Comandi per la gestione dei processi in Linux

Come inviare processi in background su Linux

Come uccidere i processi zombi in Ubuntu

Come uccidere i processi in Linux usando kill, killall e pkill