我尝试ps
使用不同类型的开关,例如-A
、aux
、ef
等,但我似乎找不到正确的开关组合来告诉我进程 ID (PID)、父进程 ID (PPID)、进程组 ID (PGID)、以及同一输出中进程的会话 ID (SID)。
答案1
干得好:
$ 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
答案2
尝试
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'
SAMPLE:
[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 和 8.x 上测试
答案3
尝试使用下面的命令并运行良好
ps -eo pid,ppid,pgid,sgid| head
PID PPID PGID SGID
1 0 1 0
2 0 0 0
4 2 0 0
6 2 0 0
7 2 0 0
8 2 0 0
9 2 0 0
10 2 0 0
11 2 0 0