尽管这里暴露的问题看起来非常相似,但提供的解决方案都没有工作。语境 :
- 树莓派零 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
此服务在启动时正确加载,在预期的段(与Wants
和WantedBy
部分相关)上。但它不会在我提供的日志文件中记录任何内容。您注意到Environment
强制进入和与Python 可执行调用传递PYTHONUNBUFFERED
的参数相同。-u
这根本没有效果。
如果我在 CLI 上启动完全相同的 exec 行,则脚本会运行并记录。通过服务定义,根本没有日志。
旁注:
- 如果我检查
journalctl
输出,我会找到我的日志行 logrotate
并log2ram
在日志文件/目录中设置
我最终添加了我的命令行,/etc/rc.local
后跟一个&符号。根据我的说法,这不是一次尝试,因为我想以尽可能最好的方式注册该服务,以了解它所运行的系统。
感谢您的回复和启发。
您不应该尝试以这种方式使用 shell 重定向。它不起作用,因为 systemd 不是外壳。相反,如果您希望将它们定向到期刊以外的其他地方
StandardOutput=
,请明确指定。StandardError=