作为 systemd 服务的 jvm 应用程序 运行 的退出代码
Exit code of a jvm application running as a systemd service
我是 运行 一个用 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 信号。似乎也没有办法将 systemd 配置为接受 143 作为进程的成功终止,并且仍然将所有其他非零退出代码解释为失败。
目标是将 SIGTERM 终止解释为成功终止,而其他终止(例如来自未处理的异常等实际故障)仍记录为失败。
有人知道解决这个问题的方法吗?或者你只是接受 journalctl 记录失败?或者你只是忽略所有非零退出代码 ExecStart=-java -jar Darts-Backend-assembly-0.1.0.jar
?
systemd 服务实际上有一个选项可以将 non-zero 退出状态处理为成功。
[Service]
SuccessExitStatus=143
考虑一下,正如预期的那样,这不会改变 0
仍然是成功退出状态的事实。
systemd manual 中的更多信息。
我是 运行 一个用 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 信号。似乎也没有办法将 systemd 配置为接受 143 作为进程的成功终止,并且仍然将所有其他非零退出代码解释为失败。
目标是将 SIGTERM 终止解释为成功终止,而其他终止(例如来自未处理的异常等实际故障)仍记录为失败。
有人知道解决这个问题的方法吗?或者你只是接受 journalctl 记录失败?或者你只是忽略所有非零退出代码 ExecStart=-java -jar Darts-Backend-assembly-0.1.0.jar
?
systemd 服务实际上有一个选项可以将 non-zero 退出状态处理为成功。
[Service]
SuccessExitStatus=143
考虑一下,正如预期的那样,这不会改变 0
仍然是成功退出状态的事实。
systemd manual 中的更多信息。