Hiç ölmeyen bir süreci nasıl öldürürsünüz?


26

Sorun

Ne SIGTERM ne de SIGKILL ile ölmeyen Java sürecim var.

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

Her sinyal alındığında yeniden doğar.

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

Tuhaf geliyor ama ben sunucuyu yeniden başlattım, hala ölmüyor .

İşlem aşağıdaki komutla init betiği aracılığıyla yürütüldü:

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

Bu işlemi işletim sistemini yeniden kurmak yerine başkalarını öldürmeye zorlama yolu var mı?

çevre

Süreç:

logstash 5.0.0~alpha5

İŞLETİM SİSTEMİ :

Red Hat Enterprise Linux Server release 6.7 (Santiago)

Java versiyonu:

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)

Sunucu Microsoft Azure'da konuşlandırılmıştır.


E işlem için gerekli dosyalardan birini öldürmeden önce yeniden adlandırmak, başarılı bir şekilde yeniden başlatılmasını engellemelidir.
Hagen von Eitzen

6
Başını kesmelisin! Bu süreç açıkça bir Highlander.
beppe9000

4
@ beppe9000 Ve bu moddayken ebeveynlerini de kullanabiliriz.
Dmitry Grigoryev

2
Başlığı görür görmez, bunun Logstash olacağını biliyordum
Mark Henderson

1
Kafasında bir adamantium kurşunla vur.
noɥʇʎԀʎzɐɹƆ

Yanıtlar:


77

init: KILL sinyali tarafından öldürülen logstash ana süreci (2546)

Aslında senin sürecin burada bitmiyor.

init: logstash ana süreci sona erdi, yeniden doğdu

Bunun yerine init tarafından yeni bir logstash işlemi başlatıldı.


Bu aynı zamanda logstash'ın yeniden başlatılmasından hangi kontrol sürecinin sorumlu olduğunu gösterir: init . Sizin işlemi büyük olasılıkla birinden başladı alır (RHEL 6 ve CentOS üzerinde Sonradan görme olduğu) /etc/inittabveya bir drop-in dosyasında /etc/init/logstash.conf(veya benzeri) ve apropiate aracıyla kontrol edilmelidir initctldeğil ile kill.

initctl listLogtastas orada olup olmadığını görmek için deneyin .

O zaman initctl stop logstashonu durduracak.

/ Etc / init dosyasındaki conf dosyasını düzenlemek veya kaldırmak, kalıcı olarak devre dışı bırakmanıza izin verecektir.

İşi serviceve chkconfigkomutlarıyla bile kontrol edebilirsiniz .


4
İş için doğru aracı kullanmak için + 1'leyin.
Mast

0

Muhtemelen logstash-röle çalışıyor çünkü ... logstash-röle

Bu kontrolden sonra ps varsa o zaman initctl listesi | çeşit

Umarım bu sana yardımcı olmuştur! Bu benim için sorunu çözdü!

Teşekkürler

VR


initSoruda yer alan bilgiler, sürecin yeniden canlandırılmasından kimin sorumlu olduğunu açıkça gösteriyor .
kasperd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.