¿Cómo matar un proceso con un solo comando?

18

Quiero matar un proceso, después de encontrar la identificación en un solo paso.

Actualmente uso estos dos comandos:

pidof <name>
kill <#number_which_is_result_of_command>

¿Cómo puedo escribir un solo comando para hacer esto?

Cuil Yahoo
fuente
¿Qué es el infierno? bash? tcsh? ...?
Levon
2
Puede buscar la sustitución de comandos en la documentación de su shell.
deviantkarot
2
Mato cosas visualmente usando: xkill. Simplemente escriba xkill en la Terminal, mueva el cursor hacia la aplicación ofensiva y presione el botón
1
@arochester Eso funciona, pero está restringido a entornos GUI, la killvariedad de comandos funcionará desde la consola (además podría automatizarse en scripts, etc.). Sigue siendo bueno hacer que las personas conozcan la xkillopción con seguridad.
Levon
Si una de las respuestas a continuación resolvió su problema, considere aceptarla haciendo clic en la marca de verificación junto a la respuesta. Recompensará a ambas partes con algunos puntos de representación y marcará este problema como resuelto.
Levon

Respuestas:

18

También puede matar procesos por nombre:

Ejemplo:

pkill vim  # kill all processes containing vim in the process name
fromnaboo
fuente
@Levon ¿Estás seguro? Pista: ¿Funcionará si cambias pkilla kill?
Mikel
No funcionará, Levon. kill -9 mata el proceso por su PID y pkill -9 mata el proceso por su nombre.
fromnaboo
66
Sin -oo -n, pkilltambién elimina todos los procesos de coincidencia, no solo uno.
Mikel
3
-1 por sugerir usar SIGKILL (-9), que es una mala ecología de proceso. Con SIGKILL, los datos dentro del proceso no se eliminan, creando una posible corrupción de datos.
Arcege
66
Sugerir killalles un consejo MUY MALO. Hace cosas muy diferentes dependiendo de en qué Unix / Linux estés.
MikeyB
13

Para responder a su pregunta específica con su conjunto de comandos, use:

kill `pidof <name>`

Dado que pidof <name>le da el PID del proceso que está tratando de matar, también puede usarlo con interruptores de línea de comandos como -9etc.

Probado con bashy tcsh.

Levon
fuente
99
Por cierto, kill $(pidof <name>)es más compatible (POSIX) y se puede usar dentro de otro bloque de sustitución de comandos .
Rudolf Adamkovic
@RudolfAdamkovic Estoy de acuerdo, esa es una mejor opción, seguro en los guiones. Sin embargo, para un comando de tipo rápido, encuentro que usar las teclas de retroceso es más fácil ... además funciona con ambos shells comunes (bash y tcsh) ... No pude hacer que la $versión funcionara con tcsh.
Levon
Solo lo probé tcshy tienes razón. No lo sabia. ¡Gracias por la información!
Rudolf Adamkovic
7

Debería haber un comentario sobre Levon, pero me falta el representante aquí para hacerlo:

Refiriéndose a la discusión en la respuesta aceptada de esta pregunta: /server/397762/how-to-make-folders-00-99-with-a-single-command-in-ubuntu

Diría que podría ser preferible (o al menos útil / más claro para los buscadores posteriores) ejecutar

kill $(pidof <name>)

Referencia adicional sobre $ () vs. ``: http://mywiki.wooledge.org/BashFAQ/082

Ghillie Dhu
fuente
+1 por incluir especialmente el enlace inferior. Recibí un comentario similar de @RudolfAdamkovic, vea mi respuesta a él. ¿Conoces una versión de esto que funcione con tcsh? (Todavía encuentro que los backticks son más fáciles de escribir en un comando rápido en el shell :)
Levon
Solo he trabajado con bash (en Linux) y ksh (en HP-UX); Todavía no me he cruzado con tcsh, lo siento.
Ghillie Dhu
1

También puede usar el killallcomando para matar el proceso en particular.

killall vim
Karthikeyan.RS
fuente