Come uccidere i processi dal terminale Linux

Contenuti

Terminale Linux stilizzato a tema Ubuntu

Qualche volta, uccidere una procedura è l'unico modo per sbarazzarsene. Nonostante il nome severo, “uccidere” un procedimiento simplemente significaobligarlo a abandonar”. Prossimo, Ti mostriamo come farlo dalla riga di comando di Linux o macOS.

Che cos'è una procedura?

Esecuzione di programmi come il tuo browser web, i processi in background associati al tuo ambiente desktop e ai servizi di sistema Linux sono tutti processi.

Puoi raggruppare i processi in due gruppi:

  • Processi in primo piano sono quelli che sono stati avviati o avviati da un utente. Possono essere in una finestra di terminale o possono essere un'applicazione grafica.
  • Processi in background sono tutti processi che si avviano automaticamente e non hanno alcuna interazione con gli utenti. Non si aspettano l'input dell'utente o presentano risultati o risultati a loro. I processi in background sono cose come servizi e demoni.

Se i processi in primo piano sono la parte anteriore dello staff teatrale e degli attori, los procesos de fondo son el equipo detrás del escenario “dietro le quinte”.

Quando i processi si comportano male o non funzionano, può richiedere troppo tempo per la CPU, consumare la RAM o entrare in un ciclo computazionale stretto e smettere di rispondere. Le applicazioni grafiche possono rifiutarsi di rispondere ai clic del mouse. Le app del terminale potrebbero non restituirlo mai al prompt dei comandi.

La soluzione umana

Matarun procedimiento simplemente significaforzar el cierre del procedimiento”. Ciò può essere necessario se la procedura si rifiuta di rispondere.

Linux fornisce kill, pkill, e killall comandi per permetterti di fare esattamente questo. Questi comandi possono essere utilizzati con qualsiasi tipo di procedura, grafico o riga di comando, in primo piano o in secondo piano.

Il comando kill

Utilizzo kill, devi conoscere l'id della procedura (PID) della procedura che vuoi concludere. il ps Il comando può essere utilizzato per trovare il PID di una procedura.

Avere ps cerca in tutti i processi usa il -e (tutti i processi) opzione. Canalizzare l'uscita attraverso less è consigliabile, ce ne sarà abbastanza. scrive ps, Uno spazio, -e, Uno spazio, | (un carattere pipa), un altro spazio e poi scrivi less. Premi Invio per eseguire il comando.

ps -e | meno

Questo ti darà un elenco di processi equivalenti allo screenshot successivo. Puoi cercare in avanti su less usando il / e puoi tornare indietro con il ? chiave inglese.

ps in una finestra in meno

Per concentrarti sulla procedura che ti interessa, convogliare l'uscita di ps attraverso grep e specifica il nome, o parte del nome, della procedura.

ps -e | grep otturatore

ps comando convogliato attraverso grep per trovare il processo dell'otturatore

Una volta individuato il PID della procedura che vuoi terminare, passalo a kill comando come parametro. Per finire il shutter procedura identificata dal comando di cui sopra, usa questo comando:

uccisione 2099

il kill Il commando è un killer silenzioso; non ti dà alcun feedback se ha avuto successo.

Il comando pkill

il pkill Il comando consente di terminare una procedura (i processi) con il suo nome. Non è necessario identificare la procedura da PID. Utilizzo pkill fornisci una definizione di ricerca che pkill usato per confrontare con l'elenco dei processi in esecuzione. I processi di abbinamento terminano. Perché, devi essere sicuro di aver digitato correttamente quel termine di ricerca.

Come rete di sicurezza, Puoi usare pgrep comando prima tu usi il pkill comando. il pgrep Il comando accetta anche una definizione di ricerca. Elencherà il PID di ogni procedura che corrisponde al termine di ricerca. Questo è sicuro perché pgrep non emetterà alcun segnale di interruzione ai processi, e se sbagli a scrivere il termine di ricerca, non cancellerà un'altra procedura per errore. Puoi assicurarti di aver pensato correttamente il termine di ricerca prima di passare a pkill. Entrambi pkill e pgrep trattare il termine di ricerca allo stesso modo. Il suo trattamento è così equivalente che condividi la stessa pagina man.

Supongamos que hay un procedimiento consubq” per tuo conto. Useremo il ps -u dave | grep comando di sbirciare dietro la tenda. Posso vederlo “subqcoincidirá con ese procedimiento y solo con ese procedimiento. Era solo così puoi vedere il nome completo della procedura.

ps -u dave | grep subq

Supponiamo che il nostro utente non ha Fatto; todo lo que conocen es que el nombre del procedimiento contiene la subcadenasubq”. Usano pgrep per verificare che ci sia una sola corrispondenza con il termine di ricerca. Quindi usano quel termine di ricerca con pkill.

pgrep subq
pkill subq

Puoi usare pkill per uccidere più processi contemporaneamente. Qui l'utente corre pgrep per controllare quanti processi ha avviato Chrome. Usano pkill per ucciderli tutti. Più tardi verificano con pgrep che tutti sono stati eliminati.

pgrep chrome
pkill chrome
pgrep chrome

Se sono in esecuzione più processi con lo stesso nome, ma non vuoi eliminarli tutti, Puoi usare pgrep con il -f (riga di comando) possibilità di identificare quale procedura è quale. Un semplice esempio sarebbe due ping Processi. Hai intenzione di ucciderne uno ma non l'altro. Puoi usare le tue righe di comando per distinguerle. Nota l'uso delle virgolette per avvolgere il parametro della riga di comando.

pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"

pgrep pkill con la riga di comando ping

Il comando Killall

Avvertimento: Sui sistemi operativi Solaris e OpenIndiana, il killall il comando sarà uccidi tutti i processi che ti appartengono. Se sei root o se hai rilasciato sudo killall riavvierà il computer! Durante la ricerca per questo post, questo comportamento è stato confermato con l'ultima versione di OpenIndiana Hipster 2018.10.

il killall comando funziona allo stesso modo al pkill comando ma con una differenza specifica. Invece di passare una definizione di ricerca al comando, è necessario fornire il nome esatto della procedura.

Non è possibile fornire una corrispondenza parziale al nome di una procedura; è necessario fornire il nome completo della procedura, come mostrato:

chiudi tutto
otturatore omicida

il -y (più piccolo di) consente di terminare i processi in esecuzione da meno di un periodo specificato. Il periodo è indicato in numeri seguiti da una di queste unità:

  • S (secondi)
  • m (minuti)
  • h (ore)
  • D (giorni)
  • w (settimane)
  • m (mesi, Nota, “m” lettera maiuscola)
  • e (anni)

Per uccidere una procedura chiamata ana che è stato appena lanciato e lascia eventuali istanze precedenti di ana in azione, è possibile utilizzare i seguenti parametri con killall, se avessi reagito in due minuti:

killall -y 2m ana

killall con opzione più giovane di

il -o L'opzione (prima di) consente di terminare i processi in esecuzione da più di un periodo specificato. Questo comando ucciderà tutti ssh connessioni in corso da più di un giorno:

killall -o 1d sshd

Non essere troppo felice

Questi comandi ti permetteranno di identificare e terminare processi errati in modo accurato e sicuro in modo corretto.

Sii sempre cauto. Primo, assicurati che la procedura che stai per completare sia veramente quella che desideri. Al secondo posto, doppio controllo: fai attenzione e assicurati che la procedura di destinazione sia quella che vuoi terminare. Procedi al completamento della procedura una volta che sei soddisfatto.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.