Python systemd服务在启动后立即停止

2024-10-02 04:21:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将Python脚本作为系统服务运行,但该服务没有启动。以下是我的配置:

pyntp.service

[Unit]
Description=Python NTP Service
After=multi-user.target

[Service]
Type=forking
ExecStart=/usr/bin/python $HOME/ntp/ntpservice.py

[Install]
WantedBy=multi-user.target

ntpservice.py

^{pr2}$

启动服务的步骤如下:

cp pyntp.service  /etc/systemd/system/
cp ntpservice.py /usr/local/bin/

systemctl daemon-reload
systemctl enable pyntp.service
systemctl start pyntp.service

问题是,当我试图查看pyntp服务的状态时,总是这样的:

● pyntp.service - Python NTP Service
   Loaded: loaded (/usr/lib/systemd/system/pyntp.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Wed 2018-11-14 22:27:56 CST; 34min ago
  Process: 801 ExecStart=/usr/bin/python $HOME/ntp/ntpservice.py (code=exited, status=0/SUCCESS)
 Main PID: 801 (code=exited, status=0/SUCCESS)

Nov 14 22:27:56 HES1 systemd[1]: Started Python NTP Service.
Nov 14 22:27:56 HES1 systemd[1]: Starting Python NTP Service...

有谁能帮我解决这个问题吗?谢谢。在


Tags: pytargethomebinusrservicemultisystemctl
1条回答
网友
1楼 · 发布于 2024-10-02 04:21:34

你的程序运行正常。仅仅fork不足以生成一个守护进程。所发生的是,只要其父进程运行,代码就一直在运行,然后(两个分支都在)在父进程终止时退出。您需要的是编写一个守护进程(并由systemd控制)。在解释一些简单的方法时,您可能会发现这个问题很有用:How do you create a daemon in Python?

fork是这个过程的一个重要部分,但是仅仅做一个fork并不能完全解决问题。如果您想了解如何使用fork手动监视进程的更详细的示例,可以阅读以下内容:Python code to Daemonize a process?

相关问题 更多 >

    热门问题