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 .