我正在使用以下命令来收集子 PID 的信息:
top -b -n1 -p 719011,719012,719013,719014,719015,719016,719017 | sed -e 's/USER/----/' -e 's/root/----/' -e 's/PR/--/' -e 's/20/--/' -e 's/VIRT/----/' -e 's/538m/----/' -e 's/RES/---/' -e 's/12m/---/' -e 's/SHR/---/' -e 's/1348/----/' -e 's/NI/--/' -e 's/S/-/' | tail -9 > file1
它工作得很好,但有点啰嗦!我想知道是否有办法仅通过使用 pPID 来收集信息?从而省去了键入每个子进程 ID 的麻烦。我不希望完整的答案只是指向正确方向的指针,所以我可以自己弄清楚!
好的,所以我已将命令整理为:
ps -o pid= --ppid 719008 | top -b -n4 | awk '{print $1,$9,$10,$12}' | tail -9 > file
但是,我没有为子进程提供输出,而是为系统上的每个进程提供输出!我错过了什么?
$ pstree -p 719008
dvaudio_server(719008)─┬─{dvaudio_server}(719011)
├─{dvaudio_server}(719012)
├─{dvaudio_server}(719013)
├─{dvaudio_server}(719014)
├─{dvaudio_server}(719015)
├─{dvaudio_server}(719016)
└─{dvaudio_server}(719017)
的输出pgrep
是:
pgrep: option requires an argument -- 'd'
Usage: pgrep [-flvx] [-d DELIM] [-n|-o] [-P PPIDLIST] [-g PGRPLIST] [-s SIDLIST]
[-u EUIDLIST] [-U UIDLIST] [-G GIDLIST] [-t TERMLIST] [PATTERN]
您可以使用以下方法获取进程的直接子代
pgrep
:和:
所以:
您可以使用
ps
来显示进程列表。它理解--ppid PPIDLIST
允许您通过以逗号分隔的父进程 ID 列表过滤进程的参数。来自
man ps
:所以也许你应该尝试类似的东西