围绕流程的括号是什么意思?


62
$ ps -Awwo pid,comm,args
  PID COMMAND         COMMAND
    1 init            /sbin/init
    2 kthreadd        [kthreadd]
    3 ksoftirqd/0     [ksoftirqd/0]
    5 kworker/u:0     [kworker/u:0]
    6 migration/0     [migration/0]
    7 cpuset          [cpuset]
    8 khelper         [khelper]
    9 netns           [netns]
   10 sync_supers     [sync_supers]
   11 bdi-default     [bdi-default]
   12 kintegrityd     [kintegrityd]
   13 kblockd         [kblockd]
   14 kacpid          [kacpid]
   15 kacpi_notify    [kacpi_notify]
   16 kacpi_hotplug   [kacpi_hotplug]
   17 ata_sff         [ata_sff]
   18 khubd           [khubd]

括号是什么意思?args是否总是将完整路径返回到process命令(例如/bin/cat)?


2
我的头号克星,user626201,已经要求在计算器这个问题stackoverflow.com/questions/7078258/...
joslinm

3
是的,这些通常是内核线程。
斯蒂芬·吉梅内斯

2
什么时候不成为内核线程?什么时候“过程参数不可用”?
mgalgs

Answers:


51

当找不到该命令的参数时,在命令名称周围会出现括号。

ps(1)FreeBSD上的手册页解释了为什么这通常发生在系统进程和内核线程中:

如果无法找到参数(通常是因为尚未设置参数,例如系统进程和/或内核线程的情况),则命令名称将显示在方括号中。

ps(1)Linux上的手册页指出类似:

有时,进程args将不可用。发生这种情况时,ps会改为在方括号中打印可执行文件的名称。


1
无法使用args与不打印process命令的完整路径有什么关系(/bin/cat)?我认为args是命令后传递的参数。(尽管命令本身确实显示在argv-我不太了解,但我认为它是一种便利功能。)
n611x007 2013年

14

从手册中:

有时,进程args将不可用。发生这种情况时,ps将在括号中显示可执行文件的名称。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.