我启用了以下systemd文件: /etc/systemd/system/pirestservice.service
[Unit]
Description=Raspberry Pi REST Service
After=local-fs.target network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/piservice/startpiservice.sh
Restart=always
[Install]
WantedBy=multi-user.target
上面引用的shell脚本如下所示,并且可以执行。
#!/bin/bash
sudo java -jar /usr/local/piservice/pirestservice-0.0.1-SNAPSHOT.jar server rest_metadata/template.yml
如果我运行shell脚本,这个dropwizard服务会启动。如果我重新启动,或从命令行启动服务,如果我这样做,服务就会显示:
ps -ef | grep pirest
我将看到分配给过程的PID号.......但是......服务并没有真正运行。我错过了什么?我只需要一个.service文件,还是我缺少其他配置? .service文件应该位于另一个目录中吗?
在一天结束时,我只希望我的应用程序作为守护程序/后台服务运行。
仅供参考,我在安装了Ubuntu Mate 16的Raspberry Pi3上运行它。
谢谢,
麦克
答案 0 :(得分:0)
java是否在路径上? 服务脚本可以正确找到您的Dropwizard配置文件吗?
我的配置如下:
[Service]
ExecStart=/usr/bin/java -jar /opt/myservice/myservice.jar server /opt/myservice/application.yml
请注意,我使用java二进制文件的绝对路径,以及Dropwizard配置文件。如果您不想硬编码配置文件的路径,请尝试在服务文件中添加:
WorkingDirectory=/opt/myservice