我在数字海洋水滴中有一个弹簧启动可执行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 请参阅系统日志和系统状态myapp.service'详情。
运行systemctl status myapp.service
会返回此信息:
Failed to get properties: No such interface ''
答案 0 :(得分:1)
试试这个:
[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
重新启动=始终 =>如果java破解,systemd重启服务
RestartSec = 5 =>崩溃后服务重启avec 5秒
修改完成后,重新加载systemd守护程序:
systemctl daemon-reload
启动时启用:
systemctl enable myapp.service
现在就开始:
systemctl start myapp.service
答案 1 :(得分:0)
您需要ExecStart
中提到的jar的包装器脚本来处理启动,停止和重启方法。
可以找到详尽的说明和示例脚本here