ps(1)
,使用该-f
选项,将输出方括号中没有关联命令行的进程,如下所示:
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Aug28 ? 00:07:42 /sbin/init
root 2 0 0 Aug28 ? 00:00:01 [kthreadd]
root 3 2 0 Aug28 ? 00:00:00 [rcu_gp]
root 4 2 0 Aug28 ? 00:00:00 [rcu_par_gp]
root 6 2 0 Aug28 ? 00:00:00 [kworker/0:0H-kblockd]
root 8 2 0 Aug28 ? 00:00:00 [mm_percpu_wq]
root 9 2 0 Aug28 ? 00:02:14 [ksoftirqd/0]
root 10 2 0 Aug28 ? 00:05:33 [rcu_preempt]
root 11 2 0 Aug28 ? 00:01:36 [rcuc/0]
root 12 2 0 Aug28 ? 00:00:00 [rcub/0]
root 13 2 0 Aug28 ? 00:00:07 [migration/0]
root 14 2 0 Aug28 ? 00:00:00 [idle_inject/0]
root 16 2 0 Aug28 ? 00:00:00 [cpuhp/0]
root 17 2 0 Aug28 ? 00:00:00 [cpuhp/1]
root 18 2 0 Aug28 ? 00:00:00 [idle_inject/1]
root 19 2 0 Aug28 ? 00:00:05 [migration/1]
root 20 2 0 Aug28 ? 00:00:55 [rcuc/1]
这些进程是否像其他进程一样被安排?
答案1
在 Linux 下,对于每个进程,在以 pid 命名的目录中ps
处理top
内核提供的可用信息。/proc
这包括两个文件,comm
以及cmdline
;comm
是进程的命令名称,cmdline
是进程的命令行,IE它所提供的参数(包括它自己的“名称”)。ps
并top
使用方括号来区分两者:如果进程有命令行,则该args
字段(也称为CMD
)输出该命令行;否则它输出命令名称,并用方括号括起来。
这在联机ps
帮助页, 为了args
:
有时进程参数不可用;发生这种情况时,
ps
将在括号中打印可执行文件名称。
没有进程参数的进程包括没有进程构造的进程任何命令行(甚至不是argv[0]
),例如内核线程和丢失命令行的进程,IE失效进程,也称为僵尸进程(可通过后缀识别<defunct>
)。
这些都不会改变调度属性:所有进程都根据其状态、优先级等以相同的方式进行调度。