Script de shell para matar a -9 según el nombre


28

¿Hay alguna manera (tal vez un script) de cómo automatizar este proceso:

petr@sova:~$ ps -ef | grep middleman
petr     18445  2312  1 12:06 pts/2    00:00:01 /home/petr/.rvm/gems/ruby-1.9.3-p362/bin/middleman                                                                  
petr     18581 13621  0 12:08 pts/0    00:00:00 grep --color=auto middleman
petr@sova:~$ kill -9 18445

Desafortunadamente, pkilles demasiado débil ya que tengo que ir con la -9opción activada kill.


2
Se puede utilizar -9con pkilldemasiado ...
Dejar de dañar Mónica

66
En mi opinión, es más elegante y apropiado de usar -KILLque -9. Qué número corresponde a qué señal depende de la implementación. SIGKILLresulta estar 9en Linux i386 y Linux amd64, pero no necesariamente en todas partes. ( Más información aquí. )
Eliah Kagan

55
@EliahKagan: aunque también me gusta usarlo -KILL(porque hace que el código sea más legible), cabe señalar que SIGKILL = 9está especificado por POSIX , por lo que -9es bastante portátil hoy en día (y no depende de núcleos o arquitecturas).
Andrea Corbellini

Respuestas:


36

Puede usar su shell para hacer esta tarea por usted:

kill -9 $(pidof middleman)

El shell ejecuta el comando pidof middlemanprimero. La salida de pidof (8) es la identificación del proceso. Por lo tanto, el shell sustituye el pidofcomando -con la identificación del proceso y se ejecuta kill -9 18845(o lo que sea la identificación correcta del proceso).


¿Cuál es la diferencia entre esto y kill -9 $(pgrep middleman)?
Aaron Franke

54

Existe una solución aún más simple que la de qbi: eliminemos killalllos procesos por nombre y puede especificar señales.

killall -9 middleman

Consulte man killallpara obtener más información y opciones adicionales (hay bastantes).

Como su nombre lo indica, esto envía la señal a todos los procesos nombrados middleman. Pero eso no es diferente de otras formas (como pkill). Por otra parte, pkill -9 middlemanse centrará en los procesos cuyo nombre partido, pero no son iguales middleman, como por ejemplo middleman2, también.


2
killall¡por la victoria!
Andrea Corbellini

44
matar a todos los intermediarios? oh querido ...
Tobias Kienzler

16

Las otras respuestas son completamente correctas, pero también podría agregar una tercera opción para que todas estén documentadas aquí. También puedes usar:

pkill -9 middleman

Consulte man pkillpara obtener más información y opciones adicionales.

Realmente no importa cuál de estos métodos uses. Todos trabajarán. Pero conocer las opciones es útil si desea modificar el comportamiento de alguna manera, ya que las páginas man correspondientes muestran qué otras opciones coincidentes están disponibles.


Extraño, no funciona aquí. Tampocomiddleman*
mreq

1
Ah Mirando más de cerca, parece probable que quieras matar a un intérprete de rubí, en lugar de un proceso realmente llamado middleman. Aquí es donde las diferencias en cómo exactamente pkill, killall, pidofy greplos procesos de los partidos comienzan realmente a la materia!
Robie Basak

12
pkill -9 -f middleman

La -fopción hace que coincida con la línea de comando completa, en lugar de solo el nombre del proceso.

Tenga en cuenta que -9debería ser una señal de último recurso, no algo para usar de forma rutinaria.


1
¡Gracias! Realmente me gusta la capacidad de igualar elcomplete command line
cwd

línea de comando completa es realmente genial!
okwap

10

Solo por diversión, me gustaría agregar una forma más manual, de la vieja escuela

kill -9 `ps aux | grep middleman | awk '{print $2}'`

1
Lo hice en el trabajo hace unos años y el administrador me dio una mirada que decía "está bien, abuelo". También puede agregar un grep -v grep antes del awk para asegurarse de que no elimine el comando grep también.
Iain Holder

@gerhard, gracias por la edición, no pude encontrar los ticks en mi iPad. grep -v es una buena idea ...
slipset

La verdadera forma de la vieja escuela sería escribir ... grep [m]iddleman ...para evitar matar el grepproceso por accidente. De esa manera, el grep no puede igualarse debido a citas divertidas.
Mikko Rantalainen

1
killall -9 -ir regex_pattern

que es interactivo (seguro) y coincide con el nombre del comando parcial.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.