web-dev-qa-db-fra.com

Comment tuer un processus qui ne meurt jamais?

Problème

J'ai Java processus qui ne meurt ni avec 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

Il réapparaît chaque fois qu'un signal est reçu.

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

Cela semble étrange mais même je redémarre le serveur, il ne meurt toujours pas.

Le processus a été exécuté via le script init avec la commande ci-dessous:

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-t-il un moyen de forcer ce processus à tuer autre que la réinstallation du système d'exploitation?

Environnement

Processus:

logstash 5.0.0~alpha5

OS:

Red Hat Enterprise Linux Server release 6.7 (Santiago)

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

Le serveur est déployé sur Microsoft Azure.

26
Yu Watanabe

init: processus principal logstash (2546) tué par le signal KILL

En fait, votre processus s'arrête là.

init: processus principal de logstash terminé, réapparition

Un processus nouvea logstash est démarré par init pour le remplacer.


Cela montre également quel processus de contrôle est responsable du redémarrage de logstash: init. (Sur RHEL 6 et CentOS qui est Upstart) Votre processus démarre très probablement à partir de/etc/inittab ou un fichier de dépôt dans /etc/init/logstash.conf (ou similaire) et doit être contrôlé avec l'outil approprié, initctl et non avec kill.

Essayez initctl list pour voir si logstash est là.

Alors initctl stop logstash l'arrêtera.

La modification ou la suppression du fichier conf dans/etc/init vous permettra de le désactiver de manière persistante.

Vous pouvez même contrôler le travail avec les commandes service et chkconfig.

78
HBruijn

C'est probablement parce que logstash-relay est en cours d'exécution ... Vous devriez essayer de arrêter logstash-relay

après cette vérification si le ps est là alors liste initctl | sort

J'espère que cela t'aidera! Cela a résolu le problème pour moi!

Merci

VR

0
vrousseu