linux – 如何杀死永不死的进程?
问题
我有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 这听起来很奇怪,但即使我重新启动服务器,它仍然不会死. 使用以下命令通过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} & 除了重新安装操作系统之外,有没有办法强制这个过程杀死? 环境 流程: 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上. 解决方法
实际上你的过程确实停在这里.
init启动新的logstash进程以替换它. 这也表明哪个控制进程负责重启logstash:init. (在RHEL 6和CentOS上是Upstart)您的进程很可能是从/ etc / inittab或/etc/init/logstash.conf(或类似)中的drop-in文件开始的,应该使用apropiate工具控制,initctl而不是kill. 尝试使用initctl列表来查看是否存在logstash. 然后initctl stop logstash将停止它. 编辑或删除/ etc / init中的conf文件将允许您持久禁用它. 您甚至可以使用service和chkconfig命令控制作业. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |