我使用systemd在Raspbian(Jessie)上設置了一項服務,使其在啓動後啓動。守護進程的配置是這樣的:如何正確地從Raspbian的systemd服務重定向stdout/stderr?
[Unit]
After=multi-user.target
[Service]
Type=idle
User=root
ExecStart=/bin/sh -c "exec /home/pi/sources/mydaemon.py >> /home/pi/mydaemon.log 2>&1"
[Install]
WantedBy=multi-user.target
這重定向>>
不工作。我嘗試了StandardOutput
和StandardError
的大部分可用選項,但它們永遠不會將我的腳本輸出結果打印到/var/log/daemon.log,並且journalctl -u mydaemon.service
僅顯示有關正在啓動和停止的服務的消息。
我對當前腳本中的文件描述符沒有任何好笑的地方。我只想讓我的print()
或logging.info()
陳述出現在我可以閱讀的地方。有任何想法嗎?
(只是要清楚,守護程序也必須以root身份運行。莫非是有什麼與我的打印問題?)
這似乎是工作只是一部分的時間。我不知道Raspbian Jessie上的systemd或journalctl有什麼問題,但我懷疑有一個問題會干擾日誌記錄。我的腳本推文,所以我知道它何時被激活,但腳本中的打印語句通常不會顯示在日誌中。 – Eric
結合你的答案,我會從我的腳本中嘗試這種方法,看看我是否有更好的運氣(明確地發送消息到期刊)http://stackoverflow.com/questions/34588421/how-to-登錄到journald-systemd-通過的Python – Eric