Debian

如何使用 start-stop-daemon(8) 重定向守護程序的標準輸出和標準錯誤?

  • October 6, 2016

我執行 Debian 8 傑西。

我已經啟動了一個守護程序的調試工具,它會導致守護程序將調試資訊列印到標準輸出和/或標準錯誤。我如何說服daemonstart-stop-daemon(8)/lib/lsb/init-functionsstdout 和 stderr 重定向到我的調試日誌文件/root/log

看來這>/root/log 2>&1是無效的。我認為這是有道理的,因為start-stop-daemon(8)它不是外殼。無論如何,我應該如何重定向守護程序的標準輸出和標準錯誤?

[守護程序恰好是exim4(8),但據我所知,這與我的問題無關。LSB 顯然將守護程序的管理委託給了 Systemd;據我所知,這可能是間接相關的。]

試圖通過 shell 腳本的各個層傳遞魔法選項在 systemd Linux 作業系統上是完全錯誤的。

systemd已經記錄了由“sysv”服務生成器自動生成的服務的標準輸出/錯誤,就像這個一樣。“sysv”服務生成器創建了一個exim4.service(在下面的某處/run/systemd)呼叫您/etc/init.d/exim4的服務。

沒有代表團在進行。您的rc腳本首先不負責該服務。它們只是作為方便的代理執行。

所以你需要做的是查看已經為exim4.service服務擷取的日誌輸出。這可以在日誌中,也可以在syslog您安排的以日誌為基礎的任何變體中。

對於後者,請執行適合您的syslog變體的任何操作。對於前者,請注意它systemctl會在您執行時向您顯示該服務的最近日誌條目

systemctl 狀態 exim4.service

具有適當的權限(超級使用者或systemd-journal組成員)。您還可以查看自上次引導以來服務的日誌條目(日誌尚未輪換)

journalctl -u exim4.service -e -b

exim 在適當的服務管理下

具有諷刺意味的是,所有這些rc腳本怪物都可以用一些相當短exim4-queue.service的 、exim4-smtp-relay@.service+exim4-smtp-relay.socketexim4-smtp-submission@.service+exim4-smtp-submission.socket服務和套接字單元來代替。

另請注意,exim 將“前景”和“調試”/“詳細”混為一談是錯誤的。它的-bdf選項明確地是 的非“dæmonizing”版本-bd,儘管將其作為每個連接的“socket-activated”守護程序呼叫(根據進一步閱讀中的範例),其中服務管理工具處理偵聽套接字,人們會使用-bs而不是-bdf無論如何。

進一步閱讀

引用自:https://unix.stackexchange.com/questions/313712