Ubuntu服务随“主进程已退出,状态143 / n / a”而随机停止

时间:2019-07-23 03:05:52

标签: scala ubuntu crash systemd sigterm

我的应用程序以Debians身份部署并开始使用systemd服务。该应用程序随机崩溃。我找不到崩溃的原因。

我有4个正在运行的应用程序[使用javascala构建,其中两个应用程序被杀死(分别命名为opcommon)。所有这些都使用systemd服务开始。

syslog上的错误是

  

Jul 22 11:45:44 misqa mosquitto [2930]:客户端上的套接字错误   005056b76983-公用,断开连接

     

Jul 22 11:45:44 misqa systemd [1]:commonmod.service:主流程   退出,代码=退出,状态= 143 / n / a

     

7月22日11:45:44 misqa systemd [1]:commonmod.service:输入了单位   失败状态

     

Jul 22 11:45:44 misqa systemd [1]:commonmod.service:失败于   结果“退出代码”

     

7月22日11:45:44 misqa systemd [1]:opmod.service:主进程已退出,   代码=退出,状态= 143 / n / a

     

7月22日11:45:44 misqa systemd [1]:opmod.service:设备输入失败   州

     

Jul 22 11:45:44 misqa systemd [1]:opmod.service:结果失败   “退出代码”

但是我的opcommon的应用程序日志文件都没有错误

当我阅读更多内容时,我了解到崩溃的原因是由于SIGTERM命令引起的,但无法找出导致它的原因。在这些应用程序中的任何一个中,我都没有killall的exec命令。

无论如何,有没有找出哪个进程正在杀死我的应用程序。

我的systemd服务是这样的:

[Unit]
Description=common Module
After=common-api
Requires=common-api

[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/common-api

[Install]
WantedBy=multi-user.target

1 个答案:

答案 0 :(得分:0)

基本上,当响应SIGTERM而关闭时,Java程序有时不返回预期的退出状态。

您应该能够通过将退出代码作为“成功”退出状态添加到systemd服务文件中来抑制这种情况:

[Service]
SuccessExitStatus=143

此解决方案成功应用于Java应用程序here (serverfault)here (stasckoverflow)