如果输入,ps -ef
则将获得进程列表。为什么PID号不连续?
如果输入,ps -ef
则将获得进程列表。为什么PID号不连续?
Answers:
在Ubuntu上,它们是连续的。在其他操作系统上,可能会有所不同。
内核在(RESERVED_PIDS,PID_MAX_DEFAULT)范围内分配PID。它在每个名称空间中按顺序执行操作(不同名称空间中的任务可以具有相同的ID)。如果范围已用尽,则会分配pid分配。
(/programming/3446727/how-does-linux-determine-the-next-pid)
记住...
有关stackoverflow的一些主题:
注释中有一个命令来测试PID的分配:
for i in {1..20}; do sh -c 'echo $$'; done
通常,PID是连续的,但是仅当您运行命令时,某些进程才会消失 ps -ef
。
同样,某些进程可能只是该ps -ef
命令中未显示的另一个进程的子进程。要查看一些扩展结果,您可以使用pstree
pstree -p
样本输出:
├─teamviewerd(3468)─┬─{teamviewerd}(3474)
│ ├─{teamviewerd}(3475)
│ ├─{teamviewerd}(3476)
│ ├─{teamviewerd}(3477)
│ ├─{teamviewerd}(3478)
而如果您运行,ps -ef
您只会看到父进程。
$ ps -ef | grep teamviewerd
root 3468 1 0 Jul15 ? 00:07:38 /opt/teamviewer9/tv_bin/teamviewerd -f