Systemd python 脚本不会记录(缓冲区原因)?

Systemd python 脚本不会记录(缓冲区原因)?

尽管问题暴露在这里看起来非常相似,提供的解决方案都不起作用。上下文:

  • Raspberry Pi Zero W、Raspbian Lite(2020-08-20)
  • 我想将 python3 脚本注册为服务,在后台运行

我想让它与 systemd 一起运行,它使用以下配置:

application.service在于/etc/systemd/system/application.service

[Unit]
Description=application
After=multi-user.target


[Service]
User=custom_user
Type=idle
TimeoutSec=0
PIDFile=/run/application.pid
ExecStart=/usr/bin/python3 -u /path/to/application.py >> /path/to/log.log 2>&1
KillMode=control-group
Environment="PYTHONUNBUFFERED=1"

Restart=always
RestartSec=3s

[Install]
WantedBy=multi-user.target

该服务在启动时正确加载预期的段(与WantsWantedBy部分相关)。但它不会在我提供的日志文件中记录任何内容。您会注意到Environment强制输入PYTHONUNBUFFERED和传递到 Python 可执行文件调用的参数相同-u。这根本没有效果。

如果我在 CLI 上启动完全相同的 exec 行,脚本将运行并记录。通过服务定义,根本没有日志。

旁注:

  • 如果我检查journalctl输出,我会发现我的日志行
  • logrotatelog2ram设置在日志文件/目录中

我最终在命令行中添加了/etc/rc.local后面添加了一个 & 符号。对我来说,这不行,因为我想以最佳方式注册此服务,以适应其运行的系统。

谢谢您的回复和启发。

答案1

您不应尝试以这种方式使用 shell 重定向。它不起作用,因为 systemd 不是 shell。相反,请指定StandardOutput=StandardError=如果您希望将它们定向到期刊以外的其他地方,请明确说明。

相关内容