我以前从未在 linux pers 中做过服务,但我一直在尝试使用 Pi 来提供服务。
我使用了 2 种不同的方法来创建服务。第一种方法是使用 systemctl,使用https://ubuntuforums.org/showthread.php?t=2318279末尾附近发布的代码作为基础。就我而言,ExecStart 如下所示:
ExecStart=/home/pi/berryconda2/bin/python /home/pi/Documents/MyCode.py
当我使用它启动此服务时,sudo systemctl start MyCode.service
它显示为活动并正在运行,直到我执行另一个存在于我的 PC 而不是 Pi 中的另一个(它们相互通信),然后我得到
- (代码=退出,状态=2)
- 单元进入故障状态。
- 结果“退出代码”失败。
如果我使用我的默认 python 解释器运行 MyCode.py,我的代码可以工作,但我希望 pi 运行自启动并继续运行它,直到我将其关闭。
现在对于我的第二种方法,我利用此处描述的步骤http://blog.scphillips.com/posts/2013/07/getting-a-python-script-to-run-in-the-background-as-a-service -on-boot/。最后,当我运行我的 .sh 时,我得到了
- 活跃(退出)
- (代码=退出,状态=0/成功)。
如后面的链接中所述,我运行start-stop-daemon --start --pidfile /var/run/MyCode_service.pid --make-pidfile --user root --startas /home/pi/Documents/MyCode.py -- --log /var/log/MyCode_service.log
并且它工作。我不确定如何正确调试此服务。我查看了https://freedesktop.org/software/systemd/man/systemd.exec.html#id-1.20.8和http://manpages.ubuntu.com/manpages/cosmic/en/man8/start-停止daemon.8.html。但我还没有弄清楚。有人可以指出我正确的方向或知道提供服务的任何其他构建块吗?或者至少可以解决问题?