我正在寻找在 Linux 中启动的进程 ID 为 0 的进程。我知道init
有 PID 1 ,它是 Linux 中的第一个进程,是否有任何进程的 PID 为 0?
slm*_*slm 61
从标题为:进程标识符的维基百科页面:
有两个具有特殊进程 ID 的任务:swapper 或sched进程 ID 为 0 并负责分页,并且实际上是内核的一部分而不是普通的用户模式进程。进程 ID 1 通常是主要负责启动和关闭系统的init进程。最初,进程 ID 1 并没有通过任何技术措施专门为 init 保留:它只是将这个 ID 作为内核调用的第一个进程的自然结果。较新的 Unix 系统通常有额外的内核组件作为“进程”可见,在这种情况下,PID 1 主动保留给 init 进程以保持与旧系统的一致性。
你可以看到这方面的证据,如果你看一下父母的PID(PPID)init
和kthreadd
:
$ ps -eaf
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jun24 ? 00:00:02 /sbin/init
root 2 0 0 Jun24 ? 00:00:00 [kthreadd]
Run Code Online (Sandbox Code Playgroud)
kthreadd
是内核线程守护进程。所有 kthread 都是从这个线程派生出来的。如果您查看其他使用ps
PPID 的进程并查看他们的 PPID,您可以看到这方面的证据:
$ ps -eaf
root 3 2 0 Jun24 ? 00:00:57 [ksoftirqd/0]
root 4 2 0 Jun24 ? 00:01:19 [migration/0]
root 5 2 0 Jun24 ? 00:00:00 [watchdog/0]
root 15 2 0 Jun24 ? 00:01:28 [events/0]
root 19 2 0 Jun24 ? 00:00:00 [cpuset]
root 20 2 0 Jun24 ? 00:00:00 [khelper]
Run Code Online (Sandbox Code Playgroud)
注意他们都是2
.