需要帮助创建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

+0

在我看来,用的PID为关键和家长的值的简单数组会让你写的会走功能在树上上下寻找(大)父母和(大)子女关系。遍历数组两次,以找到祖父母的值。遍历它两次匹配值的钥匙找到孙子。但是你看*输出什么?只是一个pid列表?或者像'ps -ejH'在Linux中显示什么,或者在FreeBSD中是'ps axd'? – ghoti

如果你是在Linux上,你会发现它很容易直接读取/proc/[pid]/status。例如

# echo $$   
167 
# grep PPid /proc/$$/status 
PPid: 158 

又见

+1

您应该将此添加到您的原始问题中,以便它可读。 – jq170727

+1

快速提示:您可能不需要同时使用'ps | awk'和'grep/proc | awk'。你可以用awk完成你需要的一切。 – jq170727

+0

你现在可以看看@ jq170727 – Unknown