Process
如何檢查unix中的java程序是否被殺死?
我在 Unix 上有一個 java 應用程序。此應用程序意外停止。我正在尋找問題所在。
我如何判斷在 Unix 上啟動的 java 程序是否被殺死?(with
kill -9 pid
) 我無法修改程式碼,我無法捕捉。我可以用-verbose
. 有些東西正在扼殺這個過程……$JAVA_HOME/bin/java \ -verbose \ -classpath '../../lib/*:.:./config' com.xxx.xxx.core.xxxxApp instance:$INSTANCE
但它不會出現在日誌中。還有什麼方法嗎?
正如 waltinator 在對您的問題的評論中建議的那樣,您可以使用 shell 腳本執行您的程序。該腳本可以阻止等待您的程序終止,然後檢查退出狀態以了解故障模式。
一般來說,如果一個程序被一個信號終止,存在狀態是128加上信號號。例如,如果有人
kill -9
對程序執行了 a,則退出狀態將為 137 (128 + 9 = 137)。例如,這是一個腳本,它執行您的命令並在響應信號終止時列印一條消息:
#!/bin/bash $JAVA_HOME/bin/java \ -verbose \ -classpath '../../lib/*:.:./config' com.xxx.xxx.core.xxxxApp instance:$INSTANCE rc=$? # The $? variable has the exit status of the previous command if [[ ${rc} -gt 128 ]]; then printf "Process terminated with signal %d\n" $((rc - 128)) fi
現在,如果我
kill -9
用來終止java
程序,那麼我得到:Process terminated with signal 9