在我的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
。