Linux jar文件的Systemd服务获取;“操作超时”;几分钟后出错或停留在;激活模式";

Linux jar文件的Systemd服务获取;“操作超时”;几分钟后出错或停留在;激活模式";,linux,jar,systemd,rhel7,selinux,Linux,Jar,Systemd,Rhel7,Selinux,服务单位为: [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 一到四分钟就可以开始了。但后来失败了: tail/var/log/messages: Feb 27 1

服务单位为:

[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
一到四分钟就可以开始了。但后来失败了:

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(重新启动时-保持激活模式):

systemctl status test.service(失败后):

  • 在命令行中运行jar时,它工作得很好
  • 尝试更改jar位置,因为我认为这是权限问题
  • 塞利努克斯走了

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

您创建了服务类型
分叉
,但此服务不分叉。它只是直接运行。因此,systemd等待了五分钟,等待程序将自己后台化,但它从未这样做。这种服务的正确类型是
简单

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

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
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)