首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用systemctl停止后,服务仍然处于失败状态。

使用systemctl停止后,服务仍然处于失败状态。
EN

Server Fault用户
提问于 2015-06-01 16:04:08
回答 2查看 58.7K关注 0票数 33

我们有一个简单的systemd脚本,可以以服务方式启动MineCraft服务器。CentOS 7也是如此。下面是脚本:

代码语言:javascript
运行
复制
[Unit]
Description=Minecraft Server
After=syslog.target network.target

[Service]
Type=simple
WorkingDirectory=/root/Minecraft
ExecStart=/bin/java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动服务很好,但是当停止时,服务仍然处于失败状态。请参见:

代码语言:javascript
运行
复制
systemctl status minecraftd.service
minecraftd.service - Minecraft Server
   Loaded: loaded (/usr/lib/systemd/system/minecraftd.service; disabled)
   Active: active (running) since Mon 2015-06-01 16:00:12 UTC; 18s ago
 Main PID: 20975 (java)
   CGroup: /system.slice/minecraftd.service
           └─20975 /bin/java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
systemctl stop minecraftd.service
systemctl status minecraftd.service
minecraftd.service - Minecraft Server
   Loaded: loaded (/usr/lib/systemd/system/minecraftd.service; disabled)
   Active: failed (Result: exit-code) since Mon 2015-06-01 16:01:37 UTC; 3s ago
  Process: 20975 ExecStart=/bin/java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui (code=exited, status=143)
 Main PID: 20975 (code=exited, status=143)

有什么想法吗?

谢谢

EN

回答 2

Server Fault用户

回答已采纳

发布于 2015-06-01 16:55:50

退出代码143意味着程序接收到一个SIGTERM信号来指示其退出。JVM捕获信号,执行干净的关机操作,即运行所有已注册的关机挂钩,但仍然以143的退出代码退出。这正是Java的工作方式。

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

代码语言:javascript
运行
复制
[Service]
SuccessExitStatus=143
票数 48
EN

Server Fault用户

发布于 2017-12-30 10:34:39

为了补充Michael的回答,退出代码143在这里是正常的,这是java接收SIGTERM信号的方式,由systemd发送来停止进程。SIGTERM信号的数值为15 (参见man signal)。

现在,根据Posix规范,“由于接收到信号而终止的命令的退出状态应报告为大于128”。(http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_08_02)

这里,Java添加了128 + 15,您得到的退出代码为143。

这里的这个非零退出代码很有意义,因为这样可以看到您的java程序由于外部信号而退出,并且您有机会知道是哪个信号。

票数 18
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/695849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档