ps切换以共同显示PID,PPID,PGID和SID


38

我尝试使用不同种类的开关(例如-A,aux,ef等)对ps进行尝试,但似乎无法找到正确的开关组合来告诉我进程ID(PID),父进程ID(PPID),进程组ID(PGID)和进程的Session ID(SID)在同一输出中。


ps -o <field>,<field>,...。手册页上有详细信息。
Mikel

@Mikel我看到它已经在ubuntu 12.04中不起作用了
JohnMerlino

1
它应该工作正常。你好吗?(请注意,-o控制输出格式,但可能仍然需要-A-e-p,等来选择哪些进程显示。)
米克尔-

Answers:


65

干得好:

$ ps  xao pid,ppid,pgid,sid | head
  PID  PPID  PGID   SID
    1     0     1     1
    2     0     0     0
    3     2     0     0
    6     2     0     0
    7     2     0     0
   21     2     0     0
   22     2     0     0
   23     2     0     0
   24     2     0     0

如果还要查看进程的名称,请使用以下命令:

$ ps  xao pid,ppid,pgid,sid,comm | head
  PID  PPID  PGID   SID COMMAND
    1     0     1     1 init
    2     0     0     0 kthreadd
    3     2     0     0 ksoftirqd/0
    6     2     0     0 migration/0
    7     2     0     0 watchdog/0
   21     2     0     0 cpuset
   22     2     0     0 khelper
   23     2     0     0 kdevtmpfs
   24     2     0     0 netns

“ comm”和“ head”有什么作用?
JohnMerlino

3
@JohnMerlino“ comm”打印命令名称,它head是一个不同的命令,与ps它无关,它只打印前N行(默认为10行),我在这里使用它来限制答案的大小。有关ps的所有知识,请参见中的介绍man ps
terdon

comm不打印完整命令。例如,如果您运行python foo.py,comm只会显示该python零件,而不会显示python foo.py
32r34wgf3e

1
是的,这就是为什么我说它会打印命令的名称。命令是pythonfoo.py是命令的参数。尝试cmd是否也需要参数。
terdon

13

尝试

ps -efj | less

具体来说,如果您要查找某个ProcessName或PID的PID / PGID / PPID / SID,请尝试:

ps -efj | grep ProcessName

ps -efj | grep PID

或为获得更好格式的输出,请尝试:

ps -ejf | egrep 'STIME|ProcessName'

ps -ejf | egrep 'STIME|pid'

Examples

ps -ejf | egrep 'STIME|http'

ps -ejf | egrep 'STIME|1234'

样品:

[ram@thinkred1cartoon ~]$ ps -ejf | egrep 'STIME|http'

UID        PID  PPID  PGID   SID  C STIME TTY          TIME CMD
root      1450     1  1450  1450  0 08:45 ?        00:00:04 /usr/sbin/httpd -DFOREGROUND
ram       3717     1  2589  2589  0 08:47 ?        00:00:00 /usr/libexec/gvfsd-http --spawner :1.3 /org/gtk/gvfs/exec_spaw/1
apache   11518  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11519  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11520  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11521  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11522  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
假设1234是PID,并且您想知道其关联的PPID,PGID,SID和CMD
在CentOS / RedHat 6.x和7.x上测试
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.