Come uccidere un processo che non muore mai?


26

Problema

Ho un processo Java che non muore né con SIGTERM né 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

Riappare ogni volta che viene ricevuto il segnale.

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

Sembra strano ma anche se riavvio il server, continua a non morire .

Il processo è stato eseguito tramite lo script init con il comando seguente:

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

C'è un modo per forzare questo processo a uccidere se non reinstallare il sistema operativo?

Ambiente

Processi :

logstash 5.0.0~alpha5

OS:

Red Hat Enterprise Linux Server release 6.7 (Santiago)

Versione 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)

Il server è distribuito su Microsoft Azure.


Rinominare uno dei file richiesti per l'eprocesso prima di ucciderlo dovrebbe impedirne il riavvio corretto.
Hagen von Eitzen,

6
Devi decapitarlo! Quel processo è chiaramente un Highlander.
beppe9000,

4
@ beppe9000 E mentre siamo dell'umore giusto, potremmo anche giustiziare i suoi genitori.
Dmitry Grigoryev il

2
Non appena ho visto il titolo, ho capito che sarebbe stato Logstash
Mark Henderson

1
Sparagli con un proiettile di adamantio in testa.
noɥʇʎԀʎzɐɹƆ

Risposte:


77

init: processo principale logstash (2546) ucciso dal segnale KILL

In realtà il tuo processo si ferma qui.

init: processo principale del logstash terminato, rigenerazione

Un nuovo processo logstash viene avviato da init per sostituirlo.


Questo mostra anche quale processo di controllo è responsabile del riavvio del logstash: init . (Su RHEL 6 e CentOS che è Upstart) Il tuo processo molto probabilmente viene avviato da uno /etc/inittabo da un file drop-in /etc/init/logstash.conf(o simile) e dovrebbe essere controllato con lo strumento apropiate initctle non con kill.

Prova initctl lista vedere se logstash è lì.

Quindi initctl stop logstashlo fermerà.

La modifica o la rimozione del file conf in / etc / init ti consentirà di disabilitarlo in modo persistente.

Potresti anche essere in grado di controllare il lavoro con i comandi servicee chkconfig.


4
+1 per l'utilizzo dello strumento giusto per il lavoro.
Albero

0

Probabilmente è perché logstash-relay è in esecuzione ... Dovresti provare a fermare logstash-relay

dopo questo controllo se il ps è lì quindi lista initctl | ordinare

Spero che questo ti possa aiutare! Mi ha risolto il problema!

Grazie

VR


Le informazioni nella domanda indicano chiaramente initche era responsabile della rigenerazione del processo.
Kasperd,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.