Linux
為什麼在 systemd-journald 中“log_set_prohibit_ipc”設置為 true?
我剛開始學習
journald
,在它的main()
函式(injournald.c
)中遇到了一個函式呼叫log_set_prohibit_ipc(true);
誰能告訴我為什麼預設設置為true?
在
systemd
原始碼中,您可以在以下位置看到聲明src/basic/log.h
:/* If turned on, then we'll never use IPC-based logging, * i.e. never log to syslog or the journal. We'll only * log to stderr, the console or kmsg */ void log_set_prohibit_ipc(bool b);
所以看起來這個功能會阻止
journald
寫入日誌。事實上,如果我們看看它的所有用途:stew ~/src/systemd-246.1/src $ grep -rw log_set_prohibit_ipc shutdown/shutdown.c: log_set_prohibit_ipc(true); shared/generator.c: log_set_prohibit_ipc(true); journal/journald.c: log_set_prohibit_ipc(true); core/manager.c: log_set_prohibit_ipc(!manager_journal_is_running(m)); core/main.c: log_set_prohibit_ipc(true); basic/log.h:void log_set_prohibit_ipc(bool b); basic/log.c:void log_set_prohibit_ipc(bool b) {
我們看到它
log_set_prohibit_ipc( ... )
被設置為true
除了core/manager.c
(主要的 systemd 管理器)之外的任何地方。即使這樣,只有在沒有其他管理器執行時,管理器才會記錄。這裡有點猜測,但我猜這意味著主管理器將代表其他 systemd 組件記錄事情,避免重複或內部日誌。這也可能是單例設計模式的實現,可能是為了簡化多寫並發問題。