ext*_*xe5 5 process scheduling kernel
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]
Run Code Online (Sandbox Code Playgroud)
这些进程是否像其他进程一样被调度?
在Linux下,ps
并top
通过内核做出手柄可用信息/proc
,对于每一个进程,在该PID命名的目录。这包括两个文件,comm
和cmdline
;comm
是进程的命令名称,cmdline
是进程的命令行,即提供给它的参数(包括它自己的“名称”)。ps
并top
使用方括号来区分两者:如果一个进程有一个命令行,那么该args
字段(也称为CMD
)输出那个;否则它输出命令名称,用方括号括起来。
这是在描述该ps
手册页,用于args
:
有时进程参数将不可用;发生这种情况时,
ps
将改为在括号中打印可执行文件名称。
没有进程参数的进程包括没有任何命令行(甚至不是argv[0]
)构建的进程,例如内核线程,以及失去命令行的进程,即失效进程,也称为僵尸进程(可通过<defunct>
后缀识别)。
这些都不会改变调度属性:所有进程都以相同的方式调度,根据它们的状态、优先级等。