Il sistema operativo Linux fornisce diversi modi per terminare un processo del sistema operativo Linux. Il modo più ovvio per interrompere un programma è fare clic sul pulsante X nell'angolo in alto a sinistra oa destra. Ma ci sono una miriade di altri modi per uccidere un processo; siamo qui per discutere gli altri modi efficienti.
Modi per terminare un processo in Linux
Sequenza di controllo
Il secondo modo ovvio per terminare un processo che è stato appena avviato è digitare Ctrl-C nella riga di comando. La sequenza di controllo Ctrl-C è generalmente sicura da usare anche se è possibile una certa perdita di dati.
La sequenza Ctrl-Z sospenderà un processo in esecuzione. Invia il segnale SIGTSP a un processo la cui azione predefinita è sospendere il processo.
uccidi comandi
Il sistema operativo Linux viene fornito con il comando kill che puoi utilizzare per terminare un processo quando non risponde o consuma troppe risorse. Un processo in Linux è un'istanza di un programma.
Un PID univoco viene generato automaticamente per quel processo all'avvio di un programma. Il processo init è il primo processo che inizia quando un sistema Linux viene avviato e viene assegnato un valore di "1".
Init è il processo principale e non può essere ucciso tramite il comando kill. Il comando kill sul processo init è semplicemente una richiesta di spegnimento del sistema.
Questa guida ti guiderà attraverso i passaggi e diversi modi per terminare un processo in esecuzione utilizzando il terminale Linux.
L'utente root ha tutte le autorizzazioni necessarie per terminare tutti i processi. Puoi ottenere una shell di root con il comando su o aggiungere sudo prima del comando ed eseguirlo.
Il segnale predefinito inviato dal comando kill
L'uccisione di un processo invierà un messaggio di terminazione al processo specificato. I due tipi principali di messaggi di terminazione includono:
• SIGTERM – Il comando kill invierà un segnale SIGTERM per impostazione predefinita. Dovrebbe consentire al processo di terminare attraverso le normali procedure di arresto. È un modo più delicato per tentare di terminare un processo e potrebbe essere bloccato.
• SIGKILL – Ucciderà sempre un processo all'improvviso. Se SIGKILL non funziona, il sistema operativo è guasto. È il metodo più rapido ed efficace per terminare un processo.
Elenca i processi in esecuzione
Il comando top, il comando ps e il comando pidof sono i modi più semplici per visualizzare i processi in esecuzione in un sistema Linux.
Sintassi:
ps -e | grep name-of-process
La schermata seguente mostra come utilizzare il comando ps per verificare se MySQL è in esecuzione sul sistema. Ci fornisce il PID del demone MySQL, che è 1162.
Opzioni comuni da aggiungere al comando ps
• -a:visualizza i processi di tutti gli utenti.
• -u:visualizza informazioni dettagliate su ciascun processo.
• -x:visualizza tutti i processi controllati dai demoni.
ps -e
Sintassi:
top
Il comando in alto ti mostrerà il PID, l'utente, il nome della risorsa e quante risorse di sistema utilizza ciascun processo. Questi sono utili se decidi di terminare uno qualsiasi dei processi.
L'uso del comando pgrep è anche molto efficiente per ottenere l'ID di processo corrispondente.
Opzioni comuni da aggiungere al comando pgrep.
• -l:elenca i nomi dei processi e i PID.
• -n:restituisce il processo più recente.
• -o:restituisce il processo più vecchio.
• -u:trova i processi che appartengono a un utente specifico.
• -x:trova un processo che corrisponda esattamente a un determinato modello.
Il comando pidof viene utilizzato per trovare l'IP di un processo se si conosce il nome del processo.
Sintassi:
pidof <options> <program>
Opzioni:
• -c:restituisce i PID all'interno di una singola directory principale.
• -o:ometterà determinati PID.
• -s:restituisce un singolo PID.
• -x:restituisce i PID di shell che eseguono script.
Puoi terminare un processo in Linux con metodi diversi a seconda che tu conosca il PID del processo, il nome del processo o il tempo di esecuzione del processo.
comando killall
Il comando killall viene utilizzato per terminare i processi in base al nome. Può uccidere più processi con un singolo comando e invia un segnale SIGTERM per impostazione predefinita.
Sintassi:
killall <process>
Opzioni disponibili con il comando killall:
• -e:restituisce la corrispondenza esatta per il nome del processo.
• -I:il comando ignorerà il caso quando trova il nome del processo.
• -i:richiederà informazioni aggiuntive quando si uccide un processo per nome.
• -u:ucciderà i processi di proprietà di un utente specificato del sistema.
• -v:darà un feedback se il processo di uccisione è stato eseguito correttamente.
Il comando killall può anche terminare i processi in un sistema Linux in base ai tempi di esecuzione dei processi.
• -o:questa opzione interromperà tutti i processi per un periodo di tempo superiore a quello specificato.
• -y:questa opzione interromperà tutti i processi in esecuzione per un periodo di tempo inferiore a quello specificato.
Esempio:
• killall -o 20m:il comando interromperà tutti i processi che sono più vecchi di 20 minuti.
• Killall -y 20m:il comando interromperà tutti i processi in esecuzione per meno di 15 minuti.
uccidi comando
Il comando kill ucciderà un processo se conosci l'IP del processo.
Sintassi:
kill <processID>
Il comando kill uccide un singolo processo con l'ID processo specificato. Il Comando invierà un segnale SIGTERM per fermarsi e attendere che il processo venga sottoposto alle procedure di spegnimento di routine.
Uccidi il comando -9
Il comando kill -9 viene utilizzato per terminare processi o servizi che non rispondono.
Sintassi:
kill -9 <processID>
o
kill -SIGKILL <processID>
Il comando kill -9 invierà un segnale SIGKILL per arrestare immediatamente un processo. Il comando kill -9 ignorerà la routine di spegnimento standard e tutti i dati non salvati andranno persi.
I programmi che non rispondono ignoreranno il comando kill ma termineranno ogni volta che viene emesso il comando kill -9.
Altre opzioni di uccisione comunemente utilizzate includono:
• -1 (HUP):questa è l'opzione "riaggancia" ed è generalmente molto sicura.
• -2 (SIGINT):questo è lo stesso segnale di Ctrl-C ed è considerata un'alternativa sicura per uccidere un programma.
• -15 (-TERM):questo è il segnale di terminazione predefinito ed è generalmente molto sicuro.
Puoi ottenere un elenco completo di tutti i segnali disponibili usando il comando kill -l.
comando pkill
Il comando pkill ucciderà un processo quando conosci il nome del processo. Per impostazione predefinita, pkill invierà il segnale SIGTERM per terminare il processo.
Sintassi:
pkill <options> <pattern>
opzioni di pkill:
• -n:questo comando interromperà i processi più recenti.
• -o:questo comando interromperà i processi più vecchi.
• -u:questo comando interromperà i processi in base all'utente selezionato.
• -x:questo comando interromperà i processi che corrispondono a un pattern.
• -signal:invia un segnale specificato diverso dal segnale predefinito SIGTERM.
xkill
Il comando xkill chiuderà la connessione di un server ai client.
xkill <resource>
Il comando xkill interromperà i processi server indesiderati.
comando superiore
Il comando in alto fornisce un'interfaccia attraverso la quale un utente può specificare il processo di terminazione.
Sintassi:
top
Per terminare un processo tramite PID, inserisci k dall'interfaccia e quindi inserisci un ID processo specificato.
Riepilogo
• È necessario disporre delle autorizzazioni sudo per terminare un processo tramite la riga di comando.
• Ogni volta che si genera un segnale utilizzando il comando kill, il sistema Linux interrompe il normale flusso di esecuzione del processo di destinazione.
• Per trovare un processo in esecuzione, puoi utilizzare i comandi ps, top, pgrep o pidof.
• Puoi terminare un processo in base al nome o all'ID del processo utilizzando i comandi killall, pkill, kill, xkill o top.
• Un processo di uccisione invierà un segnale di terminazione di SIGTERM, SIGHUP o SIGKILL.
• È possibile utilizzare System Monitor per terminare il processo Linux. Può essere trovato negli strumenti di sistema e fornisce diverse opzioni come il processo principale, il processo finale o l'interruzione del processo.
• Il comando kill e le sue varianti sono piuttosto semplici da capire e da usare.
In questa guida, abbiamo evidenziato vari modi per terminare i processi in Linux. C'è una leggera curva di apprendimento in termini di elenco di opzioni di segnale che offre, che è essenziale per una corretta amministrazione di Linux. Se vuoi saperne di più, ti suggerisco di guardare le rispettive pagine man.