¿Cómo matar un proceso que nunca muere?


26

Problema

Tengo un proceso de Java que no muere ni con SIGTERM ni SIGKILL.

logstash  2591     1 99 13:22 ?        00:01:46 /usr/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+DisableExplicitGC -Djava.awt.headless=true -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -Xmx1g -Xms256m -Xss2048k -Djffi.boot.library.path=/usr/share/logstash/vendor/jruby/lib/jni -Xbootclasspath/a:/usr/share/logstash/vendor/jruby/lib/jruby.jar -classpath : -Djruby.home=/usr/share/logstash/vendor/jruby -Djruby.lib=/usr/share/logstash/vendor/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main --1.9 /usr/share/logstash/lib/bootstrap/environment.rb logstash/runner.rb --path.settings /etc/logstash

Reaparece cada vez que se recibe la señal.

Sep 15 13:22:17 test init: logstash main process (2546) killed by KILL signal
Sep 15 13:22:17 test init: logstash main process ended, respawning

Suena extraño, pero incluso cuando reinicio el servidor, todavía no muere .

El proceso se ejecutó a través del script de inicio con el siguiente comando:

NAME=logstash
LS_USER=logstash
LS_OPTS="--path.settings=/etc/logstash"
LS_PIDFILE=/var/run/$NAME/$NAME.pid
LS_STDERR="/var/log/logstash/logstash.stderr"
DAEMON="/usr/share/logstash/bin/logstash"

runuser -s /bin/sh -c "exec $DAEMON ${LS_OPTS}" ${LS_USER} &>${LS_STDERR} &

¿Hay alguna forma de forzar este proceso a matar que no sea reinstalar el sistema operativo?

Medio ambiente

Proceso:

logstash 5.0.0~alpha5

OS:

Red Hat Enterprise Linux Server release 6.7 (Santiago)

Versión de Java:

openjdk version "1.8.0_101"
OpenJDK Runtime Environment (build 1.8.0_101-b13)
OpenJDK 64-Bit Server VM (build 25.101-b13, mixed mode)

El servidor se implementa en Microsoft Azure.


Cambiar el nombre de uno de los archivos necesarios para el proceso antes de eliminarlo debería evitar que se reinicie correctamente.
— Hagen von Eitzen

66
Tienes que decapitarlo! Ese proceso claramente es un Highlander.
— beppe9000

44
@ beppe9000 Y mientras estemos de humor, también podríamos ejecutar a sus padres.
— Dmitry Grigoryev

2
Tan pronto como vi el título, supe que sería Logstash
— Mark Henderson

1
Dispárale con una bala de adamantium en la cabeza.
— noɥʇʎԀʎzɐɹƆ

Respuestas:


77

init: proceso principal logstash (2546) asesinado por la señal KILL

En realidad su proceso se detiene aquí.

init: proceso principal logstash finalizado, reaparecer

Init inicia un nuevo proceso de logstash para reemplazarlo.


Eso también muestra qué proceso de control es responsable de reiniciar logstash: init . (En RHEL 6 y CentOS que es Upstart) Su proceso probablemente se inicia desde /etc/inittabun archivo desplegable /etc/init/logstash.conf(o similar) y debe controlarse con la herramienta adecuada, initctly no con kill.

Intenta initctl listver si logstash está allí.

Entonces initctl stop logstashlo detendrá.

Editar o eliminar el archivo conf en / etc / init le permitirá deshabilitarlo de forma persistente.

Incluso puede controlar el trabajo con los comandos servicey chkconfig.


44
+1 por usar la herramienta adecuada para el trabajo.
— Mástil

0

Probablemente se deba a que logstash-relay se está ejecutando ... Debe intentar detener logstash-relay

después de esta comprobación, si el ps está allí, entonces initctl list | ordenar

¡Espero que esto ayude! ¡Me solucionó el problema!

Gracias

VR


La información en la pregunta indica claramente initque fue el responsable de reaparecer el proceso.
— kasperd
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.