CentOS 5.9
kill -3 <java process pid>
Was passiert eigentlich, wenn ich laufe ?dieser Red Hat-Artikel, ich verstehe, dass ein Java Thread Dump generiert wird, aber wird der Prozess beendet? Basierend auf meinen Tests scheint dies nicht der Fall zu sein:
[root@foobox ~]# kill -3 14559
[root@foobox ~]# service foo status
foo (pid 14559) is running...
Mit anderen Worten: Könnte ich auf diese Weise einen Thread-Dump sammeln, ohne den Dienst zu beeinträchtigen?
Antwort1
Hoffentlich kill -3
wird der JVM-Prozess nicht beendet.
Ein Thread-Dump beeinträchtigt den Dienst während der Stacktrace-Sammlung geringfügig, insbesondere wenn Tausende von Threads ausgeführt werden.
-Xrs
Beachten Sie, dass die JVM das Signal nicht spezieller verarbeitet, wenn das Flag verwendet wird SIGQUIT
. Dann wird das Signal wahrscheinlich den Prozess beenden, sofern nicht in einem nativen Code ein alternativer Handler vorhanden ist.
Antwort2
https://superuser.com/questions/352147/was-bedeutet-kill-3kann Ihnen weitere Informationen geben.
Es liegt am Prozess, zu bestimmen, wie genau er reagieren wird, wenn erSIGQUIT
Da dieses Signal vom Prozess abgefangen, ignoriert oder blockiert werden kann, wird es möglicherweise nicht beachtet kill
. Wenn Sie noch genauer hinschauen möchten, empfehle ich, den PID mit zu stapeln, strace
während Sie ihn SIGQUIT
mit kill senden.