GNU/Linux >> Linux Esercitazione >  >> Linux

Come uccidere un processo o fermare un programma in Linux

Quando un processo si comporta in modo anomalo, a volte potresti voler terminarlo o ucciderlo. In questo post esploreremo alcuni modi per terminare un processo o un'applicazione dalla riga di comando e da un'interfaccia grafica, utilizzando gedit come applicazione di esempio.

Utilizzo della riga di comando/caratteri di terminazione

Ctrl + C

Un problema durante l'invocazione di gedit dalla riga di comando (se non stai usando gedit & ) è che non libererà il prompt, in modo che la sessione della shell sia bloccata. In questi casi, Ctrl+C (il tasto Control in combinazione con 'C') torna utile. Questo terminerà gedit e tutto il lavoro andrà perso (a meno che il file non sia stato salvato). Ctrl+C invia il SIGINT segnala a gedit . Questo è un segnale di arresto la cui azione predefinita è terminare il processo. Indica alla shell di interrompere gedit e torna al ciclo principale e ti verrà restituito il messaggio.

$ gedit
^C

Ctrl + Z

Questo è chiamato carattere di sospensione . Invia un SIGTSTP segnale da elaborare. Anche questo è un segnale di arresto, ma l'azione predefinita non è uccidere ma sospendere il processo.

Si fermerà (ucciderà/termina) gedit e restituisce il prompt della shell.

   $ gedit
   ^Z
   [1]+  Stopped                 gedit
   $

Una volta sospeso il processo (in questo caso, gedit ), non è possibile scrivere o fare nulla in gedit . In background, il processo diventa un lavoro . Questo può essere verificato da jobs comando.

  $ jobs
  [1]+  Stopped                 gedit

jobs consente di controllare più processi all'interno di una singola sessione di shell. Puoi interrompere, riprendere e spostare i lavori in background o in primo piano secondo necessità.

Riprendiamo gedit in background e libera un prompt per eseguire altri comandi. Puoi farlo usando il bg comando, seguito dall'ID lavoro (notare [1] dall'output di jobs sopra. [1] è l'ID lavoro).

   $ bg 1
   [1]+ gedit &

È simile all'avvio di gedit con &, :

   $ gedit &

Usare uccidi

kill consente un controllo preciso sui segnali, consentendo di segnalare un processo specificando un nome o un numero di segnale, seguito da un ID processo o PID.

Cosa mi piace di kill è che può funzionare anche con ID lavoro. Iniziamo gedit in background usando gedit & . Supponendo di avere un ID lavoro di gedit dai jobs comando, inviamo SIGINT a gedit :

   $ kill -s SIGINT %1

Tieni presente che l'ID lavoro deve essere preceduto da % o kill lo considererà un PID.

kill può funzionare senza specificare esplicitamente un segnale. In tal caso, l'azione predefinita è inviare SIGTERM , che interromperà il processo. Esegui kill -l per elencare tutti i nomi dei segnali e utilizzare man kill comando per leggere la pagina man.

Usare killall

Se non vuoi specificare un ID lavoro o un PID, killall consente di specificare un processo per nome. Il modo più semplice per terminare gedit usando killall è:

   $ killall gedit

Questo ucciderà tutti i processi con il nome gedit . Come kill , il segnale predefinito è SIGTERM . Ha la possibilità di ignorare le maiuscole usando -I :

   $ gedit &
   [1] 14852

   $ killall -I GEDIT
   [1]+  Terminated              gedit

Per saperne di più sui vari flag forniti da killall (come -u , che ti permette di terminare i processi di proprietà dell'utente) controlla la pagina man (man killall )

Utilizzo di xkill

Hai mai riscontrato un problema in cui un lettore multimediale, come VLC, è disattivato o bloccato? Ora puoi trovare il PID e terminare l'applicazione utilizzando uno dei comandi sopra elencati oppure utilizzare xkill .

xkill ti permette di uccidere una finestra usando un mouse. Esegui semplicemente xkill in un terminale, che dovrebbe cambiare il cursore del mouse in una x o una piccola icona del teschio. Fai clic su x sulla finestra che vuoi chiudere. Fai attenzione usando xkill , tuttavia, come spiega la sua pagina man, può essere pericoloso. Sei stato avvisato!

Fare riferimento alla pagina man di ciascun comando per ulteriori informazioni. Puoi anche esplorare comandi come pkill e pgrep .


Linux
  1. Come riavviare (o ripristinare) un processo in esecuzione in Linux?

  2. Come uccidere un processo in esecuzione su una porta specifica in Linux?

  3. Come fermare un processo dello schermo in Linux?

  4. Come uccidere un processo in esecuzione su una particolare porta in Linux?

  5. Come impostare l'ID processo in Linux per un programma specifico

Kill Command in Linux

Come uccidere i processi Zombie in Linux

Come eliminare l'esecuzione del processo Linux su una porta particolare

Come trovare l'ID di processo di un programma e ucciderlo [Suggerimento rapido]

Come KILL un processo su Linux

Come uccidere o terminare un processo Linux:la guida definitiva