Logging
Systemd python腳本不會記錄(緩衝區原因)?
儘管這裡暴露的問題看起來非常相似,但提供的解決方案都沒有工作。語境 :
- 樹莓派零 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=