我正在运行一个用scala编写的应用程序(运行在jvm上),作为一个配置了ExecStart=java -jar Darts-Backend-assembly-0.1.0.jar
的systemd服务。
在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'.
据我所知,当Scala(Java)应用程序接收到SIGTERM信号时,没有办法配置它的退出代码。似乎也没有办法配置systemd,使其接受143作为进程的成功终止,并仍然将所有其他非零退出代码解释为失败。
目标是将SIGTERM终止解释为成功终止,而将其他终止(例如,来自实际失败的终止,如未处理的异常)仍记录为失败。
有没有人知道解决这个问题的方法?或者你只是接受journalctl记录失败?或者你只是忽略所有ExecStart=-java -jar Darts-Backend-assembly-0.1.0.jar
的非零退出代码?
1条答案
按热度按时间x0fgdtte1#
systemd服务实际上具有将非零退出状态处理为成功的选项。
考虑到这一点,正如预期的那样,这并没有改变
0
仍然是成功退出状态的事实。更多信息请参阅systemd手册。