'ps' 参数共同显示 PID、PPID、PGID 和 SID

Joh*_*ino 56 process ps

我试着ps用不同的各种开关例如-Aauxef,等等,但我似乎无法找到开关,会告诉我的进程ID(PID),父进程ID(PPID)的正确组合,进程组ID(PGID)以及同一输出中进程的会话 ID (SID)。

ter*_*don 83

干得好:

$ 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
Run Code Online (Sandbox Code Playgroud)

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

$ 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
Run Code Online (Sandbox Code Playgroud)

  • 是的,这就是为什么我说它打印命令的_name_。该命令是“python”,“foo.py”是该命令的参数。如果您也想要参数,请尝试“cmd”。 (5认同)
  • “comm”和“head”有什么作用? (4认同)
  • @JohnMerlino "comm" 打印命令名称,而 `head` 是一个不同的命令,与 `ps` 无关,它只打印前 N(默认为 10)行,我在这里使用它来限制我的答案的大小. 您需要了解的有关 ps 的所有信息都在 `man ps` 中进行了解释。 (3认同)
  • `comm` 不会打印完整的命令。例如,如果你运行 `python foo.py`,comm 只会显示 `python` 部分,而不显示 `python foo.py` (2认同)

Ram*_*lia 18

尝试

ps -efj | less
Run Code Online (Sandbox Code Playgroud)

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

ps -efj | grep ProcessName

ps -efj | grep PID
Run Code Online (Sandbox Code Playgroud)

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

ps -ejf | egrep 'STIME|ProcessName'

ps -ejf | egrep 'STIME|pid'
Run Code Online (Sandbox Code Playgroud)

Examples

ps -ejf | egrep 'STIME|http'

ps -ejf | egrep 'STIME|1234'
Run Code Online (Sandbox Code Playgroud)

样本:

[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
Run Code Online (Sandbox Code Playgroud) 假设 1234 是 PID 并且您想知道其关联的 PPID、PGID、SID 和 CMD
在 CentOS/RedHat 6.x 和 7.x 上测试