Como matar um processo que nunca morre?

26

Problema

Eu tenho o processo java que não morre nem com o SIGTERM nem com o 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

Ele reaparece toda vez que o sinal é recebido.

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

Parece estranho, mas mesmo eu reinicio o servidor, ele ainda não morre .

O processo foi executado através do script init com o comando abaixo:

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} &

Existe alguma maneira de forçar esse processo a não ser reinstalar o sistema operacional?

Meio Ambiente

Processo :

logstash 5.0.0~alpha5

SO:

Red Hat Enterprise Linux Server release 6.7 (Santiago)

Versão 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)

O servidor é implantado no Microsoft Azure.

Yu Watanabe
fonte
Renomear um dos arquivos necessários para o processo antes de eliminá-lo deve impedir que ele seja reiniciado com êxito.
Hagen von Eitzen
6
Você precisa decapitar! Esse processo é claramente um Highlander.
precisa saber é o seguinte
4
@ beppe9000 E enquanto estivermos com esse humor, podemos também executar seus pais.
Dmitry Grigoryev
2
Assim que vi o título, sabia que seria Logstash
Mark Henderson
1
Atire com uma bala de adamantium na cabeça.
noɐɹƆzɐɹƆ 17/09/16

Respostas:

77

init: processo principal do logstash (2546) eliminado pelo sinal KILL

Na verdade, seu processo pára por aqui.

init: processo principal do logstash finalizado, reaparecendo

Um novo processo de logstash é iniciado pelo init para substituí-lo.


Isso também mostra qual processo de controle é responsável por reiniciar o logstash: init . (No RHEL 6 e no CentOS, que é inicial) É muito provável que seu processo seja iniciado a partir de /etc/inittabum arquivo drop-in /etc/init/logstash.confou (ou similar) e deve ser controlado com a ferramenta apropriada, initctle não com kill.

Tente initctl listver se o logstash está lá.

Então initctl stop logstashvai parar.

Editar ou remover o arquivo conf em / etc / init permitirá que você o desative persistentemente.

Você pode controlar o trabalho com os comandos servicee chkconfig.

HBruijn
fonte
4
+1 para usar a ferramenta certa para o trabalho.
mastro
0

Provavelmente porque o logstash-relay está em execução ... Você deve tentar parar o logstash-relay

após esta verificação, se o ps estiver lá, então initctl list | ordenar

Eu espero que isso te ajude! Corrigiu o problema para mim!

obrigado

VR

vrousseu
fonte
As informações na pergunta indicam claramente initque foi a responsável por reaparecer o processo.
kasperd