gpt4 book ai didi

python - Systemd 服务 - 启动时 screen 内的 Python 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:21 25 4
gpt4 key购买 nike

我目前通过 rc.local 中的这个脚本在 Screen session 中运行一个 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 session 中运行我的脚本?

如果我得到一个正在运行的 screen 列表,它会显示 screen session “pi”已死。

最佳答案

尝试使用显式路径,例如 ...

ExecStart=/usr/bin/bash -c '/usr/bin/screen -L -dmS pi  /usr/bin/python /home/pi/truck/main2.py'

通常,您可以通过调用的迭代来调试这些。
例如,在 terminal 中尝试(并在每次成功时继续)

  1. /usr/bin/python/home/pi/truck/main2.py
  2. /usr/bin/screen -L -dmS pi/usr/bin/python/home/pi/truck/main2.py
  3. /usr/bin/bash -c '/usr/bin/screen -L -dmS pi/usr/bin/python/home/pi/truck/main2.py'

如果 #3 按预期工作,则将其复制到服务文件中。归根结底,这就是 systemd 在这种情况下所做的一切。如果您尝试以不同的用户身份运行脚本,您将使用类似 su - pi 的东西来测试并在服务文件中使用 User=pi 如果您是以 root 身份调试。

关于python - Systemd 服务 - 启动时 screen 内的 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47772773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com