【发布时间】:2023-10-10 10:29:02
【问题描述】:
我有一个作为守护进程工作的简单 Python 脚本。我正在尝试创建 systemd 脚本以便能够在启动期间启动此脚本。
当前 systemd 脚本:
[Unit]
Description=Text
After=syslog.target
[Service]
Type=forking
User=node
Group=node
WorkingDirectory=/home/node/Node/
PIDFile=/var/run/zebra.pid
ExecStart=/home/node/Node/node.py
[Install]
WantedBy=multi-user.target
node.py:
if __name__ == '__main__':
with daemon.DaemonContext():
check = Node()
check.run()
run 包含 while True 循环。
我尝试使用systemctl start zebra-node.service 运行此服务。不幸的是,服务从未完成说明序列 - 我必须按 Ctrl+C。
脚本正在运行,但状态正在激活,一段时间后它变为停用。
现在我正在使用 python-daemon (但在我尝试不使用它并且症状相似之前)。
我应该为我的脚本实现一些附加功能还是 systemd 文件不正确?
【问题讨论】:
-
答案是否解决了您的问题?如果没有,请在创建 DaemonContext() 时尝试设置 daemon_context=True。它可能会起作用。
-
@pawelbial 很遗憾,您的 Python 代码示例不完整(缺少
daemon的导入并且不清楚,Node的来源)因此不容易/不可能重现您的情况。 -
@pawelbial 这与问题间接相关,但可能对您有所帮助:unix.stackexchange.com/a/226853/33386
标签: python python-daemon systemd