Necesito buscar un determinado proceso y matar ese proceso. Escribí un comando como este:
ps -e | grep dmn | awk '{print $1}' | kill
Donde está el nombre del proceso dmn
. Pero no está funcionando. ¿Cómo puedo encontrar procesos por nombre y kill
ellos?
linux
bash
shell
command-line
command-line-arguments
usuario567879
fuente
fuente
$()
sintaxis:kill $(ps -e | grep dmn | awk '{print $1}')
.kill $(ps -efw | grep dmn | grep -v grep | awk '{print $2}')
no estoy seguro de por qué y no me importa lo suficiente.kill
trató de matar incluso el proceso 'grep' que estaba tratando de buscar el patrón\n
después de cada awk, como enawk '{print $1"\n"}'
?En caso de que haya varios procesos que desee eliminar, puede usar esto:
ps -efw | grep dmn | grep -v grep | awk '{print $2}' | xargs kill
Nota: Debe eliminar el proceso grep en sí de la salida, por eso
grep -v grep
se usa.fuente
Podrías usar
si su sistema tiene el comando pkill .
fuente
Solo agrego otros, pero me gusta usar la capacidad de características de expresiones regulares de awk:
kill $(ps | awk '/dmn/{print $1}')
fuente
Si tiene el
pidof
comando en su sistema (sé que los shells como ZSH vienen con esto por defecto, a menos que me equivoque), podría hacer algo como.kill -9 $(pidof dmn)
fuente
También puedes usar killall :
fuente
Es posible que no lo necesite
pipe
, si tiene elpidof
comando y conoce el nombre de la imagen, lo hice así:kill $(pidof synergyc)
$()
Entiendo esto ya que convierte esa salida en una variable que kill puede usar, esencialmente como lo haría pipe. Más corto y más fácil de entender que algunas otras opciones, pero también quizás menos flexible y más directo.fuente
for procid in $(ps -aux | grep "some search" | awk '{print $2}'); do kill -9 $procid; done
hola amigos ... podemos hacerlo usando for loop.
"Algunas búsquedas" es aquí cualquier nombre de proceso que desee buscar, por ejemplo "java", así que digamos que el número de procesos java es 200+, por lo que matar uno por uno será demasiado típico.
para que pueda usar el comando anterior.
Gracias.
fuente
Úselo
pgrep
con la opción -f.kill $(pgrep -f dmn)
fuente
pgrep
, ¿por qué no simplementepkill -f dmn
?