无法启动systemd服务

4

我在Digital Ocean droplet上有一个Spring Boot可执行jar文件。我能够使用 java -jar myapp.jar 命令执行该jar文件。现在我想将其作为一个服务运行。

我创建了文件/etc/systemd/system/myapp.service,内容如下:

[Unit]
Description=myapp
After=syslog.target

[Service]
User=kevin
ExecStart=/var/myapp/myapp-backend-1.0-SNAPSHOT.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

然后启用它以在系统启动时自动运行。
systemctl enable myapp.service

我现在正在尝试启动该服务

systemctl start myapp.service

但我遇到了这个错误

无法启动myapp.service:未知单元:myapp.service 请查看系统日志和“systemctl status myapp.service”获取详细信息。

运行systemctl status myapp.service返回以下内容:

Failed to get properties: No such interface ''
2个回答

3

试试这个:

[Unit]
Description=myapp
After=syslog.target

[Service]
User=kevin
ExecStart=java -jar /var/myapp/myapp-backend-1.0-SNAPSHOT.jar
SuccessExitStatus=143
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

我添加了以下内容:

在ExecStart中加入java -jar

Restart=always => 如果Java崩溃,systemd将重新启动服务

RestartSec=5 => 在服务崩溃后,等待5秒后重新启动

修改完成后,请重新加载systemd守护进程:

systemctl daemon-reload

开机启动:

systemctl enable myapp.service

现在开始:

systemctl start myapp.service

仍然出现以下错误:无法启动myapp.service:未知单元:myapp.service 请查看系统日志和“systemctl status myapp.service”的详细信息。 - kev
1
你能否在执行 "systemctl restart myapp.service" 后将 "systemctl -xn" 的输出结果合并起来? - Alban VIDAL

0

您需要一个包装脚本来处理 ExecStart 中提到的 jar 的启动、停止和重启方法。

详细的说明和示例脚本可以在 这里 找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接