我正在尝试使用 Centos 7 上的 systemd 让 java 应用程序(服务器)作为服务启动,但总是失败。
这是我的推送服务
[Unit]
Description=b4xpush server
After=syslog.target
After=network.target
[Service]
ExecStart=/usr/java/jdk1.8.0_45/bin/java -jar /home/mike/push/PushServer.jar
Type=simple
Restart=on-failure
[Install]
WantedBy=multi-user.target
创建文件后,我开始使用
sudo systemctl start Push.service
但徒劳无功……
如果我手动运行它,Java 应用程序将运行良好:
/usr/java/jdk1.8.0_45/bin/java -jar /home/mike/push/PushServer.jar
或者
java -jar /home/mike/push/PushServer.jar
我怎样才能让它运行?最终目标是让它在服务器启动时启动。
这可能是权限错误吗?当我尝试创建此文件时,我以 Mike 身份登录,并且拥有“sudo”权限。如您在上面的服务文件中所见,该应用程序 (jarfile) 位于我的主文件夹中。
我已经尝试了所有能想到的方法,但还是无法解决问题并使其正常工作。有什么想法吗?
编辑:使用状态添加日志文件:
[mike@vps ~]$ sudo systemctl status Push.service -l
Push.service - b4xpush server
Loaded: loaded (/etc/systemd/system/Push.service; disabled)
Active: failed (Result: start-limit) since Thu 2015-11-12 16:20:52 CET; 1min 25s ago
Process: 3651 ExecStart=/usr/java/jdk1.8.0_45/bin/java -jar /home/mike/push/PushServer.jar (code=exited, status=1/FAILURE)
Main PID: 3651 (code=exited, status=1/FAILURE)
Nov 12 16:20:52 vps.server.com java[3651]: at anywheresoftware.b4a.BA.raiseEvent(BA.java:84)
Nov 12 16:20:52 vps.server.com java[3651]: at b4j.example.main.main(main.java:29)
Nov 12 16:20:52 vps.server.com systemd[1]: Push.service: main process exited, code=exited, status=1/FAILURE
Nov 12 16:20:52 vps.server.com systemd[1]: Unit Push.service entered failed state.
Nov 12 16:20:52 vps.server.com systemd[1]: Push.service holdoff time over, scheduling restart.
Nov 12 16:20:52 vps.server.com systemd[1]: Stopping b4xpush server...
Nov 12 16:20:52 vps.server.com systemd[1]: Starting b4xpush server...
Nov 12 16:20:52 vps.server.com systemd[1]: Push.service start request repeated too quickly, refusing to start.
Nov 12 16:20:52 vps.server.com systemd[1]: Failed to start b4xpush server.
Nov 12 16:20:52 vps.server.com systemd[1]: Unit Push.service entered failed state.
[mike@vps ~]$