需要帮助创建pid进程树
问题描述:
我有一个项目,我正在做。这是我第一次创建一个pid进程树。树是想表现出极大的祖父母,外祖父母,父母,子女,孙子,曾孙需要帮助创建pid进程树
的说明:
写一个脚本这需要一个PID为 参数并打印以下 信息:
一)命令名
b)中的任何网络连接,
C)重复(a)和(b)用于高达3祖先 过程和最多3个世代的 后代
这是代码我到目前为止
ps -al | awk '{print $4,$5}'
parents[pid]=ppid
echo $parents
此代码的输出假设显示PID和PPID的列表,但它不起作用。我需要帮助。此外,我正在使用Linux编写此代码。
这是我创建的新代码。
function treeOfLife(){
pid=$$
myParent=$PPID
myParent=$(ps -al | awk '{print $4,$5}')
GPPID=$(grep PPid: /proc/$$/status | awk '{print $2}')
echo $myParent $GPPID
}
treeOfLife $myParent $GPPID
当我运行代码这是我得到的输出。 PID PPID 1304 1167 1506 1304 1507 1506 1508 1507 1509 1507 1304
答
如果你是在Linux上,你会发现它很容易直接读取/proc/[pid]/status
。例如
# echo $$
167
# grep PPid /proc/$$/status
PPid: 158
又见
在我看来,用的PID为关键和家长的值的简单数组会让你写的会走功能在树上上下寻找(大)父母和(大)子女关系。遍历数组两次,以找到祖父母的值。遍历它两次匹配值的钥匙找到孙子。但是你看*输出什么?只是一个pid列表?或者像'ps -ejH'在Linux中显示什么,或者在FreeBSD中是'ps axd'? – ghoti