Come terminare un processo con un singolo comando?


18

Voglio terminare un processo, dopo aver trovato l'id in un solo passaggio.

Attualmente uso questi due comandi:

pidof <name>
kill <#number_which_is_result_of_command>

Come posso scrivere un singolo comando per fare questo?


Quale shell? bash? tcsh? ...?
Levon,

2
Puoi cercare la sostituzione dei comandi nella documentazione della tua shell.
Deviantkarot,

2
Uccido visivamente le cose usando: xkill. Digita xkill nel Terminale, sposta il cursore sull'app in questione e premi il pulsante. Andato

1
@arochester Funziona, ma è limitato agli ambienti della GUI, la killvarietà di comandi funzionerà dalla console (inoltre potrebbe essere automatizzata negli script, ecc.). Ancora buono per rendere le persone consapevoli xkilldell'opzione di sicuro.
Levon,

Se una delle risposte di seguito ha risolto il tuo problema, considera di accettarlo facendo clic sul segno di spunta accanto alla risposta. Ricompenserà entrambe le parti con alcuni punti rep e contrassegnerà questo problema come risolto.
Levon,

Risposte:


18

Puoi anche terminare i processi per nome:

Esempio:

pkill vim  # kill all processes containing vim in the process name

@Levon Sei sicuro? Suggerimento: funzionerà se cambi pkilla kill?
Mikel

Non funzionerà, Levon. kill -9 uccide il processo con il suo PID e pkill -9 uccide il processo con il suo nome.
fromnaboo

6
Senza -oo -n, pkilluccide anche tutti i processi di abbinamento, non solo uno.
Mikel,

3
-1 per aver suggerito di usare SIGKILL (-9), che è una cattiva ecologia di processo. Con SIGKILL, i dati all'interno del processo non vengono cancellati, creando possibili danni ai dati.
Arcege

6
Suggerire killallè MOLTO MALE CONSIGLI. Fa cose molto diverse a seconda di Unix / Linux.
MikeyB,

13

Per rispondere alla tua domanda specifica con il tuo set di comandi, usa:

kill `pidof <name>`

Dato che pidof <name>ti dà il PID del processo che stai cercando di uccidere, puoi usarlo con opzioni della riga di comando come -9ecc.

Testato con bashe tcsh.


9
A proposito, kill $(pidof <name>)è più compatibile (POSIX) e può essere utilizzato all'interno di un altro blocco di sostituzione comandi .
Rudolf Adamkovic,

@RudolfAdamkovic Sono d'accordo, questa è un'opzione migliore, sicuramente negli script. Tuttavia, per un comando digitato veloce trovo più facile usare i backtick .. in più funziona con entrambe le shell comuni (bash e tcsh) .. Non sono riuscito a far funzionare la $versione con tcsh.
Levon,

L'ho appena provato tcshe hai ragione. Non lo sapevo. Grazie per l'informazione!
Rudolf Adamkovic,

7

Dovrebbe essere un commento su Levon's, ma mi manca il rappresentante qui per farlo:

Riffing sulla discussione nella risposta accettata di questa domanda: /server/397762/how-to-make-folders-00-99-with-a-single-command-in-ubuntu

Direi che potrebbe essere preferibile (o almeno utile / più chiaro per gli utenti successivi) eseguire

kill $(pidof <name>)

Ulteriori riferimenti su $ () vs. ``: http://mywiki.wooledge.org/BashFAQ/082


+1 per l'inclusione del link in basso in particolare. Ho ricevuto un commento simile da @RudolfAdamkovic, vedi la mia risposta a lui. Conosci una versione di questo che funziona con tcsh? (Trovo ancora più facile scrivere backtick su un comando rapido nella shell :)
Levon,

Ho lavorato solo con bash (su Linux) & ksh (su HP-UX); non ho ancora incrociato i percorsi con tcsh, scusa.
Ghillie Dhu,

1

Puoi anche usare il killallcomando per terminare il processo particolare.

killall vim
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.