Bagaimana cara membunuh proses yang tidak pernah mati?

26

Masalah

Saya memiliki proses java yang tidak mati dengan SIGTERM atau 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

Itu respawns setiap kali sinyal diterima.

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

Kedengarannya aneh tapi bahkan saya reboot server, masih tidak mati .

Proses dijalankan melalui skrip init dengan perintah di bawah ini:

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

Apakah ada cara untuk memaksa proses ini untuk membunuh selain menginstal ulang OS?

Lingkungan Hidup

Proses:

logstash 5.0.0~alpha5

OS:

Red Hat Enterprise Linux Server release 6.7 (Santiago)

Versi 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)

Server digunakan di Microsoft Azure.

Yu Watanabe
sumber
Mengganti nama salah satu file yang diperlukan untuk proses sebelum membunuh itu harus mencegahnya berhasil restart.
Hagen von Eitzen
6
Anda harus memenggalnya! Proses itu jelas adalah seorang Highlander.
beppe9000
4
@ beppe9000 Dan sementara kita berada dalam suasana hati itu, kita mungkin juga mengeksekusi orang tuanya.
Dmitry Grigoryev
2
Segera setelah saya melihat judulnya, saya tahu ini akan menjadi Logstash
Mark Henderson
1
Tembak dengan peluru adamantium di kepala.
noɥʇʎԀʎzɐɹƆ

Jawaban:

77

init: proses utama logstash (2546) terbunuh oleh sinyal KILL

Sebenarnya proses Anda berhenti di sini.

init: proses utama logstash berakhir, respawning

Sebuah baru proses logstash dimulai oleh init untuk menggantikannya.


Itu juga menunjukkan proses kontrol mana yang bertanggung jawab untuk me-restart logstash: init . (Pada RHEL 6 dan CentOS yang baru mulai) Proses Anda kemungkinan besar dimulai dari salah satu /etc/inittabatau file drop-in di /etc/init/logstash.conf(atau serupa) dan harus dikontrol dengan alat yang sesuai, initctldan bukan dengan kill.

Coba initctl listlihat apakah ada logstash.

Maka initctl stop logstashakan menghentikannya.

Mengedit atau menghapus file conf di / etc / init akan memungkinkan Anda untuk menonaktifkannya secara terus-menerus.

Anda bahkan mungkin dapat mengontrol pekerjaan dengan perintah servicedan chkconfig.

HBruijn
sumber
4
+1 untuk menggunakan alat yang tepat untuk pekerjaan itu.
Tiang
0

Mungkin karena relay-logstash sedang berjalan ... Anda harus mencoba untuk menghentikan relay-logstash

setelah ini periksa apakah ps ada di sana kemudian initctl daftar | menyortir

Saya harap ini akan membantu Anda! Itu memperbaiki masalah bagi saya!

Terima kasih

VR

vrousseu
sumber
Informasi dalam pertanyaan dengan jelas menunjukkan bahwa itu adalah inityang bertanggung jawab untuk respawning proses.
kasperd