我目前通过rc.local中的脚本在Screen会话中运行python脚本:
screen -L -dmS pi python /home/pi/truck/main2.py &
但是我想通过systemd运行它,所以如果Python脚本崩溃我可以重新启动它。
我尝试在/systemd/system/myscript.service
中创建服务[Unit]
Description=myscript
After=network.target
[Service]
Type=simple
Restart=on-failure
RestartSec=3
ExecStart=/usr/bin/screen -L -dmS pi python /home/pi/truck/main2.py
[Install]
WantedBy=multi-user.target
但它不会在Screen会话中运行我的脚本吗?
如果我得到一个正在运行的屏幕列表,它会显示屏幕会话" pi"已经死了。
答案 0 :(得分:0)
尝试使用显式路径,例如......
ExecStart=/usr/bin/bash -c '/usr/bin/screen -L -dmS pi /usr/bin/python /home/pi/truck/main2.py'
通常,您可以通过迭代调用来调试这些 例如,在 terminal 中尝试(并继续每次成功)
/usr/bin/python /home/pi/truck/main2.py
/usr/bin/screen -L -dmS pi /usr/bin/python /home/pi/truck/main2.py
/usr/bin/bash -c '/usr/bin/screen -L -dmS pi /usr/bin/python /home/pi/truck/main2.py'
如果#3 按预期工作,则将其复制到服务文件中。在这一天结束的时候,在这种情况下,systemd
所有人都在做这件事。如果您尝试以不同的用户身份运行脚本,则在调试 root