GNU/Linux >> Linux Esercitazione >  >> Linux

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

Cos'è un processo

Un processo, noto anche come attività, è la forma in esecuzione di un programma. I programmi vengono archiviati su disco e i processi vengono eseguiti in memoria. I processi hanno una relazione genitore/figlio. Un processo può generare uno o più figli. È possibile eseguire più processi in parallelo.

Elenco dei processi di sistema

Il comando process status (ps) elenca i processi associati alla tua shell.

# ps [options]

Per ogni processo, il comando ps visualizza il PID , l'identificatore del terminale (TTY ), il tempo di esecuzione cumulativo (TIME ) e il nome del comando (CMD ). Ad esempio, elenca i processi attualmente in esecuzione sul sistema utilizzando il comando ps.

# ps
  PID TTY          TIME CMD
 1442 pts/1    00:00:00 sudo
 1448 pts/1    00:00:00 su
 1449 pts/1    00:00:00 bash
 1666 pts/1    00:00:00 ps

Il comando ps ha diverse opzioni che puoi usare per visualizzare ulteriori informazioni sul processo.

  • -a :stampa le informazioni su tutti i processi richiesti più di frequente, ad eccezione dei capigruppo di processi e dei processi non associati a un terminale
  • -e :stampa le informazioni su ogni processo attualmente in esecuzione
  • -f :genera un elenco completo
  • -l :genera un elenco lungo
  • Formato -o :Scrive le informazioni in base alla specifica del formato fornita in un formato. È possibile specificare più opzioni -o. La specifica del formato viene interpretata come la concatenazione separata da caratteri spaziali di tutti gli argomenti delle opzioni di formato.

Elencare tutti i processi

Ad esempio, usa "ps -ef ' comando per elencare tutti i processi attualmente pianificati per l'esecuzione sul sistema.

# ps -ef | more

Ecco,

  • UID :il nome utente del proprietario del processo
  • PID :il numero di identificazione del processo univoco del processo
  • PPID :il numero di identificazione del processo padre del processo
  • TEMPO :L'ora di inizio del processo (hh:mm:ss)
  • TTY :Il terminale di controllo per il processo. Nota che i processi di sistema (daemon) mostrano un punto interrogativo (?), che indica il processo avviato senza l'uso di un terminale.
  • TEMPO :il tempo di esecuzione cumulativo per il processo
  • CMD :il nome del comando, le opzioni e gli argomenti

Chiusura di un processo

Potrebbero esserci momenti in cui è necessario terminare un processo indesiderato. Un processo potrebbe essere entrato in un ciclo infinito o potrebbe essersi bloccato. Puoi uccidere o interrompere qualsiasi processo di tua proprietà. Puoi utilizzare i seguenti due comandi per terminare uno o più processi:
– kill
– pkill

I comandi kill e pkill inviano segnali ai processi indirizzandoli a terminare. Ogni segnale ha un numero, un nome e un evento associato. Di seguito sono riportati alcuni dei segnali più comunemente utilizzati con le relative funzionalità.

Numero Nome Descrizione
1 SIGHUP Ricarica il file di configurazione
2 SEGNO Interruzione da tastiera (ctrl+c)
9 SIGKILL termina il processo
15 SIGTERM Termina immediatamente il processo. (Termina un processo in modo controllato in modo che la pulizia sia possibile)
18 SIGCONT Continua il processo interrotto con STOP
19 STOP Interrompi processo
Nota :Tuttavia, ci sono processi che non dovrebbero essere terminati, come init processi. L'eliminazione di tali processi può causare un arresto anomalo del sistema. Un superutente può terminare qualsiasi processo nel sistema.

Terminare un processo usando il comando kill

È possibile terminare qualsiasi processo inviando il segnale appropriato al processo interessato. Il comando kill invia il segnale 15, il segnale di terminazione, per impostazione predefinita. Questo segnale fa terminare il processo in modo ordinato. Il comando kill invia un segnale di terminazione a uno o più processi. La sintassi per utilizzare il comando kill è la seguente:

# kill [-signal] PIDs
Nota :Il comando kill termina solo i processi che possiedi. L'utente root può utilizzare il comando kill su qualsiasi processo.

È necessario conoscere il PID del processo prima di poterlo terminare. È possibile utilizzare il comando ps o pgrep per individuare il PID del processo. Inoltre, puoi terminare più processi contemporaneamente immettendo più PID su una singola riga di comando. Vediamo un esempio di comando kill. Chiuderemmo il processo "sleep 400" come mostrato di seguito.

# ps -ef | grep sleep
root      1337  1218  0 07:33 pts/0    00:00:00 sleep 400
# kill -9 1337
# ps -ef | grep sleep
#

Terminare un processo usando il comando pkill o killall

In alternativa, puoi usare il comando pkill o killall per inviare il segnale di terminazione ai processi.

# pkill [-options] PIDs

o

# killall [-options] PIDs

Il comando pkill/killall richiede di specificare il nome invece del PID del processo. Ad esempio, usa il comando pkill per terminare il processo dtmail.

# pkill dtmail 
# pgrep -l mail
#

Interruzione forzata di un processo:segnale 9

Alcuni processi ignorano il segnale predefinito 15 inviato dal comando kill. Se un processo non risponde al segnale 15, puoi forzarne l'interruzione utilizzando il segnale 9 con il comando kill o pkill.

# kill -9 PID

o

# pkill -9 process_name
Nota :L'invio del segnale 15 non interrompe necessariamente un processo con grazia. Solo se il segnale viene catturato dal processo, si ripulisce in ordine e muore. In caso contrario, muore.


Linux
  1. Come uccidere un processo zombie su Linux

  2. Come trovare e uccidere il processo Zombie in Linux

  3. Cosa sono i processi zombi e come trovare e uccidere i processi zombi?

  4. Come eliminare i processi in esecuzione in Linux

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

Come trovare e uccidere i processi in esecuzione in Linux

Come individuare e terminare un processo con il terminale Linux

Come KILL un processo su Linux

Padroneggia il processo di uccisione di Linux utilizzando ps, pgrep, pkill e altro

Come uccidere i processi zombi in Ubuntu

4 modi per uccidere un processo:kill, killall, pkill, xkill