Logs
控制台和虛擬終端中的程序輸出不同
foo
當我在控制台(即)中執行命令時tty1
,輸出被發送到控制台。daemon foo started successfully
當我在虛擬終端 ( ) 中執行相同的命令時
terminator
,我在終端中看不到任何輸出,但輸出被發送到syslog
.為什麼會這樣,我如何控制輸出的發送位置?
我有一個執行命令的 init 啟動腳本,
foo
輸出被發送到tty1
. 我想將輸出發送到 syslog(就好像我已經在虛擬終端中啟動了 init 腳本,而不是在控制台中)
正如您可以在daemon 的 Debian 手冊頁中閱讀的那樣,這在很大程度上取決於您如何在哪個 init 系統下實現您的守護程序。
- SysV方式(stdin/out/err連接到/dev/null)
- “新式”方式:(stdout/stderr 指向 systemd-journald.service)
… 10.不是使用 syslog() 呼叫直接記錄到系統 syslog 服務,新式守護程序可以選擇簡單地通過 fprintf() 記錄到標準錯誤,然後由 init 系統轉發到 syslog …
在後一種情況下,您在 xterm 下注意到的行為是正常的方式。
守護程序通過 fprintf (stdout / stderr) 輸出的內容然後在 syslog 的控制之下。
因此,根據您的系統日誌配置(如您在 syslog.conf 文件中找到的那樣)和日誌級別,您的守護程序輸出將被忽略/附加到某些特定文件/在系統控制台(您的 tty1)上回顯,永遠不要xterm。