jar 文件的 Systemd 服务在几分钟后出现“操作超时”错误或保持“激活模式”

Posted

技术标签:

【中文标题】jar 文件的 Systemd 服务在几分钟后出现“操作超时”错误或保持“激活模式”【英文标题】:Systemd Service for jar file gets "operation timed out" error after few minues or stay in "activating mode" 【发布时间】:2015-04-30 20:11:00 【问题描述】:

服务单位是:

[Unit]
Description=test
After=syslog.target
After=network.target

[Service]
Type=forking
ExecStart=/bin/java -jar /home/ec2-user/test.jar
TimeoutSec=300

[Install]
WantedBy=multi-user.target

1-4 分钟可以正常启动。但后来它失败了:

tail /var/log/messages:

Feb 27 18:43:44 ip-172-31-40-48 systemd: Reloading.
Feb 27 18:44:06 ip-172-31-40-48 systemd: Starting test...
Feb 27 18:44:06 ip-172-31-40-48 java: 5.1.73
Feb 27 18:44:06 ip-172-31-40-48 java: Starting the internal [HTTP/1.1] server on port 8182
Feb 27 18:49:06 ip-172-31-40-48 systemd: test.service operation timed out.Terminating.
Feb 27 18:49:06 ip-172-31-40-48 systemd: test.service: control process exited, code=exited status=143
Feb 27 18:49:06 ip-172-31-40-48 systemd: Failed to start test.
Feb 27 18:49:06 ip-172-31-40-48 systemd: Unit test.service entered failed state.

systemctl status test.service(重新启动时-保持激活模式):

test.service - Setsnew
Loaded: loaded (/etc/systemd/system/test.service; enabled)
Active: activating (start) since Sun 2015-03-01 14:29:36 EST; 2min 30s ago
Control: 32462 (java)
CGroup: /system.slice/test.service

systemctl status test.service(失败后):

test.service - test
Loaded: loaded (/etc/systemd/system/test.service; enabled)
Active: failed (Result: exit-code) since Fri 2015-02-27 18:49:06 EST; 18min ago
Process: 27954 ExecStart=/bin/java -jar /home/ec2-user/test.jar (code=exited, status=143)
在命令行中运行 jar 时,它工作得很好。 尝试更改 jar 位置,因为我认为这是权限问题 selinux 已关闭

如何解决这个问题,以便在启动时启动 jar?有什么选择吗? (RHEL7 不包含服务命令)

【问题讨论】:

【参考方案1】:

您创建了服务类型forking,但该服务没有分叉。它只是直接运行。因此,systemd 等待了 5 分钟,让程序自己守护进程,但它从来没有这样做过。这种服务的正确类型是simple

您还禁用了 SELinux,这是您应该解决的另一个问题。

【讨论】:

以上是关于jar 文件的 Systemd 服务在几分钟后出现“操作超时”错误或保持“激活模式”的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 websocket 在几分钟后关闭?

Linux:systemd配置jar启动服务

Linux:systemd配置jar启动服务

sharepoint2013,在线打开excel文档时,出现报错:很抱歉,完成您的请求时遇到问题。请在几分钟后再次尝试

“由于远程桌面服务正忙,因此无法完成你尝试执行的任务,请在几分钟后重试,其他用户应该任然能够登录,

最简明的 Systemd 进程管理教程,搞懂只需10分钟~