Systemd
為什麼每個登錄的使用者都擁有一個“systemd”程序?
在我的
ps
輸出中:root 1 0.0 0.0 225552 5316 ? Ss /lib/systemd/systemd --system --deserialize 19 message+ 572 0.0 0.0 51564 3076 ? Ss /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only root 590 0.0 0.0 71084 2084 ? Ss /lib/systemd/systemd-logind t 929 0.0 0.0 76872 1988 ? Ss /lib/systemd/systemd --user t 980 0.0 0.0 50792 2688 ? Ss /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only systemd+ 2632 0.0 0.0 71240 2464 ? Ss /lib/systemd/systemd-resolved systemd+ 2637 0.0 0.0 143976 712 ? Ssl /lib/systemd/systemd-timesyncd root 2642 0.0 0.4 232544 37308 ? S<s /lib/systemd/systemd-journald root 3334 0.0 0.0 46108 2252 ? Ss /lib/systemd/systemd-udevd testme 22693 0.0 0.0 76964 3428 ? Ss /lib/systemd/systemd --user
為什麼我有這麼多與 systemd 相關的程序?
特別是,為什麼
systemd
每個登錄的使用者都擁有一個程序?在 Linux 的引導順序中,核心作為第一個程序啟動 init 系統,然後執行 init 程序,
login
以便每個使用者都可以登錄。我認為init系統應該作為一個單例程序執行,不管有多少使用者登錄,也不管init系統是sysvinit還是systemd,對嗎?對於那些不屬於 root 的 systemd 程序,它們是否作為守護程序執行?
謝謝。
init 程序是 pid 1,並且 root 肯定不必登錄來啟動它。其他程序不是 init 程序。
各種每使用者 systemd 程序管理每個使用者的服務。其中包括使用者服務 (
systemctl --user start ...
) 和一些“每個使用者的守護程序”(在 GNOME 中,您會看到 PulseAudio、各種 GVFS 程序等)。其他 systemd 程序處理特定服務:解析器、時間同步服務、日誌等。
您的
ps
輸出顯示這些程序都沒有控制終端,因此它們都作為守護程序執行(對於某些守護程序值)。systemd 有很好的文件,try
man systemd
等man systemd-logind
。