为什么每个登录的用户都拥有一个“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进程?

对于那些不属于 root 的 systemd 进程,它们是否作为守护进程运行?

谢谢。

答案1

init 进程的 pid 为 1,root 肯定不需要登录即可启动它。其他进程不是 init 进程。

各种每用户 systemd 进程管理每个用户的服务。其中包括用户服务 ( systemctl --user start ...) 和许多“每用户守护进程”(在 GNOME 中,您将看到 PulseAudio、各种 GVFS 进程等)。

其他 systemd 进程处理特定服务:解析器、时间同步服务、日志等。

您的ps输出显示这些进程都没有控制终端,因此它们都作为守护进程运行(对于守护进程的某些值)。

systemd 有非常好的文档, tryman systemdman systemd-logind

相关内容