Назад | Перейти на главную страницу

Как убить процесс, который никогда не умирает?

Проблема

У меня есть java-процесс, который не умирает ни с SIGTERM, ни с 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

Он возрождается каждый раз при получении сигнала.

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

Звучит странно, но даже я перезагружаю сервер, он все еще не умирает.

Процесс был выполнен через сценарий инициализации с помощью следующей команды:

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

Есть ли способ заставить этот процесс убить, кроме переустановки ОС?

Окружающая среда

Обработать :

logstash 5.0.0~alpha5

ОПЕРАЦИОННЫЕ СИСТЕМЫ :

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.

init: главный процесс logstash (2546) убит сигналом KILL

На самом деле ваш процесс на этом заканчивается.

init: основной процесс logstash завершен, возрождение

А новый Процесс logstash запускается init, чтобы заменить его.


Это также показывает, какой процесс управления отвечает за перезапуск logstash: в этом. (В RHEL 6 и CentOS, это Upstart) Ваш процесс, скорее всего, запускается с любого/etc/inittab или вспомогательный файл в /etc/init/logstash.conf (или аналогичный) и должны контролироваться с помощью соответствующего инструмента, initctl а не с kill.

Пытаться initctl list чтобы узнать, есть ли там logstash.

затем initctl stop logstash остановит это.

Редактирование или удаление файла conf в / etc / init позволит вам навсегда отключить его.

Возможно, вы даже сможете контролировать работу с помощью service и chkconfig команды.

Вероятно, это связано с тем, что logstash-relay запущен ... Вам следует попробовать остановить logstash-relay

после этого проверьте, есть ли пс, тогда список initctl | Сортировать

Я надеюсь, что это поможет вам! Это устранило проблему для меня!

Спасибо

VR