簡體   English   中英

PID1是哪一個:/ sbin / init或systemd

[英]Which one is PID1: /sbin/init or systemd

我正在使用Arch Linux。 我已經了解了systemd,據我了解, systemd是第一個過程,它將啟動其余過程。 但是當我使用時:

ps -aux

結果顯示/sbin/init具有PID1。當我使用時:

pstree -Apn

結果顯示systemd具有PID1。哪個正確? /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 ”的符號鏈接。 這可能類似於您的系統。 我們可以看到什么樣的信息ps -aux通過使用strace荷蘭國際集團它。

$ 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM