在我的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 进程,它们是否作为守护进程运行?
谢谢。
答案1
init 进程的 pid 为 1,root 肯定不需要登录即可启动它。其他进程不是 init 进程。
各种每用户 systemd 进程管理每个用户的服务。其中包括用户服务 ( systemctl --user start ...
) 和许多“每用户守护进程”(在 GNOME 中,您将看到 PulseAudio、各种 GVFS 进程等)。
其他 systemd 进程处理特定服务:解析器、时间同步服务、日志等。
您的ps
输出显示这些进程都没有控制终端,因此它们都作为守护进程运行(对于守护进程的某些值)。
systemd 有非常好的文档, tryman systemd
等man systemd-logind
。