bash - 查找进程的所有祖先和子进程

标签 bash unix recursion

我需要编写一个递归函数,该函数将采用 PID 并查找其父级、祖先和子级。我写了这个,但似乎不起作用。

此函数仅适用于用户输入的进程的祖先。

findFather(){
if [ $1 -ne 1 ]; then
   pid=$1
   ppid=ps -ef | awk '$pid == $2'
   findFather $ppid
   echo $ppid
fi

findFather $1

最佳答案

pstree 来自 psmisc 包:

*$ sleep 60 & sleep 60 & sleep 60 &
[1] 2196
[2] 2197
[3] 2198
$ echo $$
1876
$ pstree -sp $$
systemd(1)───gnome-terminal-(3381)───fish(1186)───bash(1876)─┬─pstree(2224)
                                                             ├─sleep(2196)
                                                             ├─sleep(2197)
                                                             └─sleep(2198)*

关于bash - 查找进程的所有祖先和子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29951804/

相关文章:

javascript - 如何根据 Javascript 中的 unix 时间戳以编程方式确定先前的时间段?

javascript - 在 Javascript 中递归调用函数?

c - 使用 C 算法按顺序打印数字

python - 如何用递归生成器遍历二叉树?

bash - 使用 makefile 并行化 bash 脚本

MySQL 通过命令行变量设置密码

unix - 如何在 unix 中查找忽略大小写的文件名

linux - 之后回显并运行命令

python - 如何使用终端逐行比较2个文件

mysql 查询 - 插入数据 unix_timestamp ( now ( ) ) 问题