gpt4 book ai didi

linux - 哪个是PID1 :/sbin/init or systemd

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:19 27 4
gpt4 key购买 nike

我正在使用 Arch Linux。我读过有关 systemd 的信息,据我了解,systemd 是第一个进程,它启动其余进程。但是当我使用时:

ps -aux

结果显示 /sbin/init 的 PID 为 1。当我使用时:

pstree -Apn

结果显示 systemd 的 PID 为 1。哪个是正确的? /sbin/init 是否正在启动 systemd

最佳答案

他们可能都是对的。

$ sudo ls -ltrh /proc/1/exe
[sudo] password for user:
lrwxrwxrwx 1 root root 0 May 30 21:22 /proc/1/exe -> /lib/systemd/systemd

$ echo $(tr '\0' ' ' < /proc/1/cmdline )
/sbin/init splash

$ stat /sbin/init
File: '/sbin/init' -> '/lib/systemd/systemd'
Size: 20 Blocks: 0 IO Block: 4096 symbolic link
Device: 801h/2049d Inode: 527481 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-05-30 21:27:12.058023583 -0500
Modify: 2016-10-26 08:04:58.000000000 -0500
Change: 2016-11-19 11:38:45.749226284 -0600
Birth: -

上面的命令告诉我们:

  • pid 1的可执行镜像对应的文件是什么?
  • 当 pid 1 启动时调用了什么(传递给 exec())?
  • /sbin/init 路径有什么特点?

在我的系统上,/sbin/init 是“/lib/systemd/systemd”的符号链接(symbolic link)。这可能与您的系统相似。我们可以通过 strace 查看 ps -aux 使用的信息。

$ strace  ps -aux
...
open("/proc/1/cmdline", O_RDONLY) = 6
read(6, "/sbin/init\0splash\0", 131072) = 18
read(6, "", 131054) = 0
close(6) = 0
...

对于 pstree 也是如此:

$ strace pstree -Apn
...
getdents(3, /* 332 entries */, 32768) = 8464
open("/proc/1/stat", O_RDONLY) = 4
stat("/proc/1", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
fstat(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(4, "1 (systemd) S 0 1 1 0 -1 4194560"..., 8192) = 192
read(4, "", 7168) = 0
open("/proc/1/task", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5
...

所以输出的不同是因为他们使用了不同的信息源。 /proc/1/cmdline 告诉我们进程是如何被调用的。而 /proc/1/stat 显示进程的名称是 systemd

$ cat /proc/1/stat
1 (systemd) S 0 1 1 0 -1 4194560 34371 596544 1358 3416 231 144 298 1758 20 0 1 0 4 190287872 772 18446744073709551615 1 1 0 0 0 0 671173123 4096 1260 0 0 0 17 2 0 0 12188 0 0 0 0 0 0 0 0 0 0

关于linux - 哪个是PID1 :/sbin/init or systemd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44274648/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com