Comandi dalla A alla Z

Come terminare o terminare un processo Linux La guida definitiva

Come terminare o terminare un processo Linux La guida definitiva

I sistemi operativi multiprocessing come Linux e BSD impiegano diversi metodi per massimizzare l'utilizzo della CPU. Un processo è semplicemente un programma in esecuzione. Poiché ci sarà più di un processo Linux in esecuzione in un dato momento, la gestione dei processi in Linux è estremamente cruciale. Gli utenti spesso affrontano problemi come la limitazione delle risorse della CPU durante l'esecuzione di troppi programmi. Situazioni come questa emergono quando la CPU non riesce a gestire il numero crescente di processi. Sebbene ciò non dipenda interamente dalla potenza della tua CPU, gestire processi impiccati o zombi può essere piuttosto frustrante. Per aiutarti a mitigare tali eventi, stiamo delineando alcuni modi standard per eliminare questi processi.

Padroneggia la gestione dei processi che non rispondono in Linux


Imparerai diversi modi per terminare un processo Linux che non risponde affatto. Se provieni da Windows, potresti avere familiarità con Ctrl+Alt+Canc. Allo stesso modo, gli utenti Mac hanno il metodo Command+Option+Escape per uccidere i processi bloccati frozen. Linux è molto più versatile delle sue controparti e offre più di un metodo per affrontare i processi morti/non responsivi.

Diversi metodi per uccidere un processo Linux morto


Delineeremo principalmente due metodi per uccidere i processi zombi. Useremo il terminale Linux per il primo metodo. Per questo, dovremo prima identificare l'id del processo. Una volta ottenuto con successo, possiamo usare questo PID per uccidere il programma inviando segnali specifici a quel PID.

Imparerai anche come eseguire questi kill job di Linux dall'interfaccia utente grafica o dalla finestra X. Faremo leva sul "Monitoraggio di sistema" applicazione disponibile in Ubuntu per questo. Sebbene questa sia un'applicazione GNOME, sono disponibili strumenti simili per altri ambienti desktop Linux.

Termina un processo che non risponde dalla riga di comando


Esistono diversi strumenti per terminare un processo che non risponde o si blocca dalla riga di comando, tra cui uccidere, pkill, e uccidi tutti. Questi comandi funzionano inviando segnali specifici a questi processi che non rispondono. Avrai bisogno dell'ID processo o PID informazioni in modo da poter inviare loro il segnale di terminazione richiesto.

Il PID o ID processo è un numero univoco che identifica un processo. Questi sono creati dal kernel Linux durante il runtime e lo scheduler dei processi controlla le loro attività della CPU. Quindi, ogni volta che invochi un'applicazione, il kernel genererà prima i processi necessari e assegnerà loro questi valori PID univoci. Possono esserci più PID associati a un processo. Inoltre, ogni processo ha un singolo processo padre con un PPID (ID processo genitore) univoco.

Quindi, se riesci a scoprire questo PPID, sarai in grado di inviare un segnale di uccisione utilizzando programmi progettati per questo scopo. Di seguito imparerai come controllare i processi in esecuzione in Linux e identificare il loro PPID dal terminale.

Scopri le informazioni PPID


Puoi scoprire il PPID di un processo usando diversi comandi di gestione dei processi in Linux, come such pidof, pstree, e pgrep. Esaminiamoli uno per uno e vediamo come ottenere il PID di un processo Linux.

Metodo 1: utilizzo del comando ps


Il comando ps in Linux mostra tutti i processi in esecuzione insieme ad altre informazioni relative ai processi come il PID nel terminale. Possiamo usare questo comando per elencare tutti i processi e quindi filtrare un processo specifico utilizzando i comandi grep di Linux. Dovrebbe mostrarci le informazioni sull'ID del processo che ci interessa interested.

$ nano > /dev/null &
$ ps aux | grep "nano"

Innanzitutto, abbiamo invocato un editor di testo Linux in background. Quindi abbiamo usato il comando ps insieme al comando grep per scoprire il PPID di questo editor. L'output può contenere diversi ID di processo, ma siamo interessati solo al primo poiché questo è il nostro PPID. Possiamo anche usare il comando awk di Linux per scoprire queste informazioni, come mostrato di seguito.

$ ps aux | awk '/nano/ print $2'

Questo comando è più flessibile poiché sopprime tutte le informazioni irrilevanti. Mostrerà solo le informazioni PPID che stiamo cercando.

Metodo 2: utilizzo del comando pstree


Il comando pstree ci fornisce una vista ad albero di tutti i processi in esecuzione. Fornisce una vista grafica dell'elenco delle attività di Linux dalla finestra del terminale. È possibile visualizzare il PPID e tutte le informazioni PID di un processo utilizzando questo comando. Dai un'occhiata agli esempi seguenti per imparare come sfruttare pstree per trovare il PPID di un processo specifico.

$ nano > /dev/null &
$ pstree -p | grep 'nano' $ pstree -p | awk '/nano/ print $NF'

Innanzitutto, abbiamo generato un processo in background utilizzando il primo comando. Il secondo comando recupera quindi il PPID di questo processo utilizzando il comando grep in Linux. Infine, il terzo comando ci mostra come recuperare questo valore usando il comando awk.

Metodo 3: utilizzo del comando pgrep


Il comando pgrep è uno dei comandi di gestione dei processi più semplici in Linux. Controlla l'elenco di tutti i processi in esecuzione e stampa il PPID di un determinato processo nello standard output o nel terminale nel nostro caso. Funziona eseguendo la corrispondenza regex ed è estremamente adatto per scrivere script di shell Linux.

$ nano > /dev/null &
$ pgrep 'nano'

Abbiamo generato il processo nano in modo simile agli esempi precedenti. Quindi abbiamo ottenuto il suo PPID usando il comando pgrep. Una volta ottenuto questo valore, possiamo eseguire il kill job di Linux molto facilmente.

Metodo 4: utilizzo del comando pidof


Il comando pidof è un altro modo semplice ma utile per determinare il PPID di un processo Linux. Visualizza sia il PPID che tutti gli altri PID associati a un processo. Dai un'occhiata all'esame di seguito per vedere come utilizzarlo in pratica.

$ nano > /dev/null &
$ pidof nano $ pidof -s nano

Quando usi il comando pidof per controllare i processi in esecuzione in Linux, vedrai spesso più PID. Di solito, in questi casi, il primo o l'ultimo numero è il PPID, a seconda che siano in ordine ascendente o in ordine discendente. Puoi usare il -S opzione di pidof per mitigare questo. Visualizzerà solo il valore PPID.

Metodo 5: utilizzo del comando in alto


Il comando top fornisce una vista in tempo reale di tutti i processi in esecuzione in sistemi operativi simili a Unix. Puoi usarlo per visualizzare l'elenco delle attività di Linux nel tuo terminale e scoprire le informazioni PID di un processo specifico.

$ in alto

Utilizzare i seguenti comandi per recuperare il PPID di un particolare processo dall'output del comando top.

$ nano > /dev/null &
$ superiore -n1 -b | grep 'nano' $ top -n1 -b | awk '/nano/ print $1'

Poiché top fornisce un output in tempo reale invece di scaricare dati statici sul terminale, abbiamo usato il -n1 e -b opzione per stampare l'output statico. Quindi puoi recuperare le informazioni PPID usando il comando grep o il comando awk in Linux.

Uccidi il processo Linux che non risponde


È possibile utilizzare uno dei metodi precedenti per recuperare il PPID del processo che non risponde. Una volta ottenuto questo, è il momento di interrompere del tutto il processo. Ci sono diversi comandi che ci permettono di farlo, come ad esempio uccidere, pkill, e uccidi tutti. Vedremo come funzionano uno per uno nelle sezioni seguenti.

Metodo 1: utilizzo del comando kill


Il comando kill è ampiamente utilizzato dagli amministratori Linux grazie alla sua semplicità e alle sue azioni robuste. Richiede il PID del processo e un segnale. Il kernel interrompe/interrompe l'esecuzione del processo in base a questo segnale. Puoi usare il comando successivo per visualizzare tutti i segnali disponibili per il comando kill.

$ kill -l

Come puoi vedere, kill offre 64 segnali diversi. Tuttavia, ne discuteremo solo due in questa guida. Questi sono il segnale 9 (SIGKILL) e il segnale 15 (SIGTERM). SIGTERM o segnale 15 è il metodo sicuro per uccidere un processo che non risponderesponsive. SIGKILL o segnale 9, d'altra parte, la forza uccide un processo Linux.

$ uccidere -9 8631 $ uccidere -KILL 8631

I comandi precedenti sono equivalenti e forzeranno l'interruzione del processo che ha il PID 8631. Questo è il PPID del processo 'nano' nel mio sistema. Sostituiscilo con il PID del processo che non risponde nel tuo sistema.

$ uccidi -15 8631 $ uccidi -TERM 8631

Anche i comandi precedenti sono equivalenti e uccideranno il processo con grazia. Ecco perché può volerci del tempo prima che il processo venga interrotto. Inoltre, potrebbe essere necessario aggiungere sudo prima del comando kill se il processo è di proprietà di un altro utente.

Metodo 2: utilizzo del comando pkill


Il comando pkill è uno dei comandi di gestione dei processi più versatili in Linux. Ci consente di interrompere un processo che non risponde in base al suo nome, PID, proprietario e altri attributi di runtime. È uno strumento perfetto per avviare utenti o persone che non hanno familiarità con molti comandi standard del terminale.

$ pkill nano $ pkill 8631 $ pkill -e nano $ pkill -f nano

Puoi usare uno qualsiasi dei comandi pkill sopra per uccidere un processo zombi/non responsivo in Linux. Usa il -e opzione se vuoi una conferma sul kill job di Linux. Il comando pkill consente inoltre agli utenti di inviare segnali di terminazione specifici.

Metodo 3: utilizzo del comando killall


Il comando killall consente agli utenti di uccidere i processi che non rispondono in base ai loro nomi. È più facile da usare ma può creare problemi se non si è prudenti. Poiché killall termina i processi in base ai nomi, c'è sempre la possibilità che tu finisca per uccidere un processo per caso. Ad esempio, se nel tuo sistema sono disponibili diverse versioni di nano, il primo esempio le ucciderà tutte all.

$ killall nano $ killall --verbose nano $ killall --interactive nano $ killall --signal KILL nano

Il primo esempio mostra l'utilizzo di base del comando killall in Linux. Il secondo comando segnalerà se il kill job è andato a buon fine o meno, e il terzo comando chiederà conferma all'utente prima di terminare il processo. Per impostazione predefinita, killall utilizza il segnale SIGTERM per uccidere i processi. Tuttavia, è possibile specificare il segnale manualmente, come mostrato nell'ultimo esempio.

Metodo 4: utilizzo di pratici One-Liner


La vera bellezza di Linux sta nel fatto che consente agli utenti di creare combinazioni di comandi sofisticate in base alle proprie esigenze. Per dimostrarlo, abbiamo delineato alcune battute nella sezione.

$ nano > /dev/null &
$ kill -9 $(pgrep nano) $ ps aux | grep -e 'nano' | awk 'stampa $2' | xargs uccide -9

Nel primo esempio, abbiamo utilizzato l'interpolazione della shell per passare il PID del processo 'nano' al comando kill di Linux. Il secondo esempio utilizza diversi comandi del terminale di tutti i giorni e il reindirizzamento I/O per terminare il processo. Puoi curare le tue eleganti battute una volta che ti senti a tuo agio con il terminale Linux.

Metodo 5: uccidi più processi usando gli script della shell Linux


A volte gli utenti potrebbero voler terminare più di un singolo processo. Possiamo facilmente automatizzare tali attività scrivendo semplici script di shell. Se sei interessato a questo argomento, controlla la nostra guida precedente sugli script di shell di Linux. Il seguente script recupererà il PPID dei processi che desideri uccidere e quindi li terminerà utilizzando i segnali di interruzione.

$ nano proc-killer.sh
#!/usr/bin/env bash per pro in "$@" do pid=$(pgrep $pro | head -1) echo $pid comm="kill -9 $pid" eval $comm done

Ora salva questo file e aggiungi il permesso di esecuzione emettendo il comando seguente below.

$ chmod +x proc-killer.sh

Ora puoi passare a questo script il nome dei processi che vuoi terminare.

$ ./proc-killer.sh nano gedit vlc

Sostituisci semplicemente gli argomenti con i nomi dei processi Linux che non rispondono nel tuo sistema.

Termina un processo che non risponde dalla GUI


Puoi anche terminare un processo che non risponde dall'interfaccia utente grafica o dalla finestra X. Discutiamo due metodi per farlo nella sezione seguente.

Metodo 1: utilizzo dell'applicazione xkill


Le moderne distribuzioni Linux utilizzano la finestra grafica X per fornire agli utenti un'esperienza grafica elegante. Esiste un semplice strumento chiamato xkill che consente agli utenti di chiudere una finestra della GUI che non risponde. È possibile poiché, in Linux, la finestra del titolo di un'applicazione è separata dall'applicazione stessa.

Vai semplicemente al tuo emulatore di terminale Linux e digita xkill. Trasformerà il cursore del mouse in un pulsante X, che può essere utilizzato per eliminare qualsiasi finestra della GUI.

$ xkill

Ora, tutto ciò che devi fare è fare clic sulla barra della finestra dell'applicazione che non risponde e verrà eliminata e scomparirà all'istante.

Metodo 2: utilizzo dell'applicazione System Monitor su Ubuntu


La maggior parte delle distribuzioni Linux tradizionali sono dotate di una sorta di strumenti di monitoraggio della GUI che consentono agli utenti di terminare graficamente un processo Linux bloccato. Ad esempio, l'applicazione System Monitor su Ubuntu ci consentirà di terminare un processo che non risponde in modo intuitivo. Puoi semplicemente selezionare il processo morto dall'elenco dei processi e ucciderlo facendo clic con il pulsante destro del mouse sul processo e selezionando l'opzione kill.

Ci sono molte altre alternative a questa applicazione e siamo sicuri che puoi facilmente trovarne una per la tua distribuzione o ambiente desktop.

Pensieri finali


Poiché la gestione dei processi in Linux è molto versatile, gli utenti spesso si sentono frustrati quando hanno a che fare con processi che non rispondono. Ecco perché i nostri redattori hanno delineato tutti i possibili modi per terminare un processo Linux morto in questa guida. Dopo aver letto questo, dovresti essere in grado di uccidere tutti i processi che non rispondono dalla riga di comando o dalla GUI. Puoi anche utilizzare uno qualsiasi dei nostri comandi one-liner per affrontare tali fastidi nel più breve tempo possibile. Inoltre, puoi anche uccidere più di un singolo processo usando il nostro semplice script di shell. Quindi si spera che tu abbia ottenuto le informazioni che cercavi dalla nostra guida.

Il tasto sinistro del mouse non funziona su Windows 10
Se stai utilizzando un mouse dedicato con il tuo laptop o computer desktop ma il il tasto sinistro del mouse non funziona su Windows 10/8/7 per qualch...
Il cursore salta o si sposta in modo casuale durante la digitazione in Windows 10
Se scopri che il cursore del mouse salta o si sposta da solo, automaticamente, in modo casuale durante la digitazione nel laptop o nel computer Window...
Come invertire la direzione di scorrimento del mouse e dei touchpad in Windows 10
Topo e Touchpads non solo rende l'elaborazione semplice, ma anche più efficiente e richiede meno tempo. Non possiamo immaginare una vita senza questi ...