【问题标题】:systemd service activation for Python script failsPython 脚本的 systemd 服务激活失败
【发布时间】:2021-04-10 16:01:15
【问题描述】:

我想注册一个 python 脚本作为守护程序服务,在系统启动时执行并在后台连续运行。该脚本打开网络套接字、本地日志文件并执行多个线程。该脚本格式正确,运行时没有任何编译或运行时问题。

我使用以下服务文件进行注册:

[Unit]
Description=ModBus2KNX Gateway Daemon
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/python3 /usr/bin/ModBusDaemon.py

[Install]
WantedBy=multi-user.target

启动服务出现以下错误:

● ModBusDaemon.service - ModBus2KNX Gateway Daemon
   Loaded: loaded (/lib/systemd/system/ModBusDaemon.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2021-01-04 21:46:29 CET; 6min ago
  Process: 1390 ExecStart=/usr/bin/python3 /usr/bin/ModBusDaemon.py (code=exited, status=1/FAILURE)
 Main PID: 1390 (code=exited, status=1/FAILURE)

Jan 04 21:46:29 raspberrypi systemd[1]: Started ModBus2KNX Gateway Daemon.
Jan 04 21:46:29 raspberrypi systemd[1]: ModBusDaemon.service: Main process exited, code=exited, status=1/FAILURE
Jan 04 21:46:29 raspberrypi systemd[1]: ModBusDaemon.service: Failed with result 'exit-code'.

感谢您的支持!

【问题讨论】:

    标签: python-3.7 raspbian daemon systemd


    【解决方案1】:

    相关帖子让我找到了我的问题的解决方案。 Ubuntu systemd custom service failing with python script 指的是同一个问题。将 WorkingDirectory 添加到 Service 部分的建议解决方案为我解决了这个问题。不过,我找不到足够的 systemd 文档来概述隐式依赖。

    【讨论】:

      【解决方案2】:

      正如 MBizm 所说,您还必须添加 WorkingDirectory。

      然后你还必须运行这些命令:

      sudo systemctl daemon-reload
      sudo systemctl enable your_service.service
      sudo systemctl start your_service.service
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-18
        • 2021-12-01
        • 2017-08-01
        • 1970-01-01
        相关资源
        最近更新 更多