Linux 列出进程ID的祖先和后代
我正在创建一个程序,它接受一个进程ID,并将其名称作为网络连接列出Linux 列出进程ID的祖先和后代,linux,bash,unix,process,parent,Linux,Bash,Unix,Process,Parent,我正在创建一个程序,它接受一个进程ID,并将其名称作为网络连接列出 echo '===========================' echo 'please enter a process ID: ' read pidN ps -p $pidN|awk '{print $1, $4}' echo '===========================' echo 'here are the network connections for: ' $pidN sudo netstat -p|
echo '==========================='
echo 'please enter a process ID: '
read pidN
ps -p $pidN|awk '{print $1, $4}'
echo '==========================='
echo 'here are the network connections for: ' $pidN
sudo netstat -p|grep $pidN
echo '==========================='
echo 'The Parent Process ID: '
ps -p ${pidN:-$$} -o ppid=
下一步是获取用户输入的ID,并查找该ID的3个父进程和该ID的3个子进程
我假设我需要创建一个for循环来递归地获取父进程和子进程,但是我不确定这将如何实现
谁能告诉我应该从哪里开始,或者如何开始
非常感谢 看看
pstree
这看起来像是一个家庭作业问题。不过,这个perl
代码片段应该可以让您开始学习<代码>ps-ef | perl-e'while(){@p=split;$ppid{$p[1]}=$p[2]}用于$i(排序(键(%ppid)){for($i;int($i)>0;$i=$ppid{$i}{print“$i=>”;}print“\n”}。这可能不适用于所有系统,但我在Ubuntu 17.04和Solaris 7上进行了测试。这是一个注释,因为它没有回答问题。看看pstree
,这看起来像是一个家庭作业问题。不过,这个perl
代码片段应该可以让您开始学习<代码>ps-ef | perl-e'while(){@p=split;$ppid{$p[1]}=$p[2]}用于$i(排序(键(%ppid)){for($i;int($i)>0;$i=$ppid{$i}{print“$i=>”;}print“\n”}。这可能不适用于所有系统,但我在Ubuntu 17.04和Solaris 7上进行了测试。这是一个评论,因为它没有回答问题。