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.