哪个过程具有PID 0?
1. 概述
作为 Linux 用户,我们熟悉进程标识符 (PID)。PID 是操作系统对正在运行的活动程序的唯一标识符。一个简单的命令查看正在运行的进程就可以看出init进程是PID 1的拥有者。那么,刻不容缓的问题是:哪个进程的PID为0?在本教程中,我们将回顾 Linux 命令来检查正在运行的进程、PID 0 是什么以及具有 PID 0 的实际进程。
2. 如何在 Linux 中查看正在运行的进程
有许多命令可以检查 Linux 中的运行进程。其中之一是ps 命令:
$ ps -eaf
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Feb25 ? 00:00:05 /sbin/init splash
root 2 0 0 Feb25 ? 00:00:00 [kthreadd]
root 3 2 0 Feb25 ? 00:00:00 [rcu_gp]
root 4 2 0 Feb25 ? 00:00:00 [rcu_par_gp]
root 9 2 0 Feb25 ? 00:00:00 [mm_percpu_wq]
root 10 2 0 Feb25 ? 00:00:00 [rcu_tasks_rude_]
** ps命令显示当前活动的运行进程**。从上面的输出中,我们可以看到*/sbin/init splash*进程的 PID 为 1, kthreadd进程的 PID 为 2,以此类推。
*我们将-eaf选项传递给ps命令,以将系统上的所有进程显示为列表。ea选项显示所有进程,而f代表完整列表。ps手册页包含我们可以与ps*命令一起使用的其他可能参数。
2.1.什么是 PPID 0?
我们从上面的输出中观察到,每个 PID 都有一个相应的 PPID。例如,/sbin/init splash的 PPID 为 0。PPID 代表父进程 ID。在 Linux 系统中,总是为每个进程 ID 分配一个父进程 ID。它告诉我们哪个进程启动了一个特定的进程。因此,** init进程的 PPID 值为 0表示该init进程没有父进程**。
2.2. 什么是 PID 0?
有时,在系统设计中,致动器的零输入对应于关闭状态或位置。但是,当我们将 0 PID 插入 PID 控制器时,它对应于什么都不做。没有错误信号会导致任何纠正。然而,零作为控制器中的 PID 并不是很有用,但从技术上讲,它是有效的。因此,PID 0 通常被称为空闲进程。
2.3. PID为0的进程是什么?
PID 为 0 的进程负责分页,这个进程总是被称为swapper或sched进程。该进程是内核的一部分,不是常规的用户模式进程。init进程拥有 PID 1并单独负责启动和关闭系统。
最初,进程 ID 1 并没有通过任何技术措施专门为init保留:它只是将这个 ID 作为内核调用的第一个进程的自然结果。此外,较新的 Unix 系统通常具有可见为“进程”的附加内核组件。在这些系统中,PID 1 被主动保留给init进程,以保持与旧系统的一致性。