Logging

Systemd python腳本不會記錄(緩衝區原因)?

  • December 1, 2020

儘管這裡暴露的問題看起來非常相似,但提供的解決方案都沒有工作。語境 :

  • 樹莓派零 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強制進入和與Python 可執行呼叫傳遞PYTHONUNBUFFERED的參數相同。-u這根本沒有效果。

如果我在 CLI 上啟動完全相同的 exec 行,則腳本會執行並記錄。通過服務定義,根本沒有日誌。

旁注:

  • 如果我檢查journalctl輸出,我會找到我的日誌行
  • logrotatelog2ram在日誌文件/目錄中設置

我最終添加了我的命令行,/etc/rc.local後跟一個&符號。根據我的說法,這不是一次嘗試,因為我想以盡可能最好的方式註冊該服務,以了解它所執行的系統。

感謝您的回復和啟發。

您不應該嘗試以這種方式使用 shell 重定向。它不起作用,因為 systemd 不是外殼。相反,如果您希望將它們定向到期刊以外的其他地方StandardOutput=,請明確指定。StandardError=

引用自:https://serverfault.com/questions/1044502