절대 죽지 않는 프로세스를 죽이는 방법?


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)

자바 버전 :

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에 배포됩니다.


종료하기 전에 프로세스에 필요한 파일 중 하나의 이름을 바꾸면 파일이 성공적으로 다시 시작되지 않습니다.
Hagen von Eitzen

6
당신은 참수했다! 그 과정은 분명히 하이랜더입니다.
beppe9000

4
@ beppe9000 그리고 우리가 그 분위기에있는 동안, 우리는 부모를 처형 할 수도 있습니다.
Dmitry Grigoryev

2
제목을 보자 마자 이것이 Logstash라는 것을 알았습니다
Mark Henderson

1
머리에 아 다만 티움 총알로 쏴.
noɥʇʎԀʎzɐɹƆ

답변:


77

init : KILL 신호에 의해 logstash 기본 프로세스 (2546)가 종료 됨

실제로 프로세스는 여기서 중지됩니다.

init : logstash 메인 프로세스 종료, 다시 생성

새로운 logstash 프로세스를 대체하기 위해 초기화가 시작됩니다.


또한 logstash를 다시 시작해야하는 제어 프로세스를 보여줍니다. init . 귀하의 프로세스가 가장 가능성 중 하나에서 시작됩니다 (RHEL 6에 CentOS에 갑자기 출세입니다) /etc/inittab또는 드롭 인 (drop-in) 파일 /etc/init/logstash.conf(또는 유사) 그리고, apropiate 도구로 제어해야 initctl하지와 kill.

시도 initctl listlogstash이 있는지.

그런 다음 initctl stop logstash중지합니다.

/ etc / init에서 conf 파일을 편집하거나 제거하면 영구적으로 비활성화 할 수 있습니다.

servicechkconfig명령 을 사용하여 작업을 제어 할 수도 있습니다 .


4
작업에 적합한 도구를 사용하는 경우 +1
Mast

0

아마도 logstash-relay가 실행 중이기 때문일 것입니다 ... logstash-relay중지 해야합니다

이 확인 후 ps가 있으면 initctl list | 종류

나는 이것이 당신을 도울 수 있기를 바랍니다! 그것은 나를 위해 문제를 해결했습니다!

감사

VR


문제의 정보 init는 프로세스를 다시 생성하는 데 책임 이 있음을 분명히 나타냅니다 .
kasperd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.