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