決して死なないプロセスを殺すには?


26

問題

SIGTERMでもSIGKILLでも死なないjavaプロセスがあります。

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

シグナルを受信するたびに再スポーンします。

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

奇妙に聞こえますが、サーバーを再起動しても、死ぬことはありません

以下のコマンドを使用して、initスクリプトを介してプロセスが実行されました。

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

OSを再インストールする以外に、このプロセスを強制終了する方法はありますか?

環境

プロセス:

logstash 5.0.0~alpha5

OS

Red Hat Enterprise Linux Server release 6.7 (Santiago)

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)

サーバーはMicrosoft Azureにデプロイされます。


強制終了する前にeprocessに必要なファイルの名前を変更すると、正常に再起動できなくなります。
ハーゲンフォン

6
あなたはそれを斬首しなければなりません!そのプロセスは明らかにハイランダーです。
beppe9000

4
@ beppe9000そして、私たちがそのような気分にある間に、その親を処刑することもできます。
ドミトリーグリゴリエフ

2
タイトルを見るとすぐに、これはLogstash
マークヘンダーソン

1
頭にアダマンティウム弾丸でそれを撃ちます。
noɥʇʎԀʎzɐɹƆ

回答:


77

init:KILLシグナルによって強制終了されたlogstashメインプロセス(2546)

実際、プロセスはここで停止します。

init:logstashメインプロセスが終了し、再スポーン

新しい logstashプロセスは、それを置き換えるためにinitによって起動されます。


また、どの制御プロセスがlogstash:initを再起動するのかを示しています。(RHEL 6およびUpstartであるCentOSの場合)プロセスはほとんどの/etc/inittab場合、/etc/init/logstash.confまたは(または同様の)ドロップインファイルから開始され、ではinitctlなく、適切なツールで制御する必要がありkillます。

試してみてくださいinitctl listlogstashがあるかどうかを確認します。

その後、それinitctl stop logstashを停止します。

/ etc / initのconfファイルを編集または削除すると、永続的に無効にできます。

さらにservicechkconfigコマンドでジョブを制御できる場合もあります。


4
仕事に適切なツールを使用するための+1。
マスト

0

これはおそらく、logstash-relayが実行されているためです... logstash-relay停止しようとする必要があります。

このチェックの後、psが存在するかどうかinitctl list | ソート

これがお役に立てば幸いです!それは私のために問題を修正しました!

ありがとう

VR


質問の情報は、それがinitプロセスの再生成の原因であったことを明確に示しています。
カスペルド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.