我正在運行一個用 scala 撰寫的應用程式(在 jvm 上運行)作為配置了ExecStart=java -jar Darts-Backend-assembly-0.1.0.jar.
通過systemctl stop darts向應用程式發送 SIGTERM 信號來終止應用程式。journalctl 將由 SIGTERM 終止的應用程式的非零退出代碼解釋為失敗:
Feb 25 13:10:00 DartberryPi systemd[1]: darts.service: Main process exited, code=exited, status=143/n/a
Feb 25 13:10:00 DartberryPi systemd[1]: darts.service: Failed with result 'exit-code'.
據我了解,在接收到例如 SIGTERM 信號時,無法配置 Scala(就此而言是 Java)應用程式的退出代碼。似乎也沒有辦法將 systemd 配置為接受 143 作為行程的成功終止,并且仍然將所有其他非零退出代碼解釋為失敗。
目標是將 SIGTERM 的終止解釋為成功終止,而其他終止(例如,來自實際失敗,例如未處理的例外)仍然記錄為失敗。
有誰知道解決這個問題的方法?還是您只是接受 journalctl 記錄失敗?還是您只是忽略所有非零退出代碼ExecStart=-java -jar Darts-Backend-assembly-0.1.0.jar?
uj5u.com熱心網友回復:
systemd 服務實際上可以選擇將非零退出狀態處理為成功。
[Service]
SuccessExitStatus=143
考慮到,正如預期的那樣,這不會改變0仍然是成功退出狀態的事實。
systemd 手冊中的更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432827.html
