问题
我有一个 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上。
答案1
init:logstash 主进程(2546)被 KILL 信号杀死
实际上你的进程确实在这里停止了。
init:logstash 主进程结束,正在重新启动
A新的logstash进程由init启动来替代它。
这也显示了哪个控制进程负责重新启动 logstash:在里面. (在 RHEL 6 和 CentOS Upstart 上)您的进程很可能从 或/etc/inittab
中的插入文件/etc/init/logstash.conf
(或类似文件)启动,并且应该使用适当的工具进行控制,initctl
而不是使用kill
。
尝试initctl list
看看 logstash 是否存在。
然后initctl stop logstash
就会停止它。
编辑或删除 /etc/init 中的 conf 文件将允许您持久禁用它。
您甚至可以使用service
和chkconfig
命令来控制作业。
答案2
可能是因为 logstash-relay 正在运行...您应该尝试停止 logstash 中继
在此之后检查 ps 是否存在initctl 列表 | 排序
希望这对你有帮助!它帮我解决了这个问题!
谢谢
虚拟现实