无法使用 systemd 让 Java 应用作为服务运行/启动

无法使用 systemd 让 Java 应用作为服务运行/启动

我正在尝试使用 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 ~]$

相关内容