您好,我正在尝试编写一个脚本,该脚本接受 PID 的参数,并打印该 PID 的所有孙子和曾孙,而不是子项。例如:
$ printthem 3545
3546
3548
3666
我尝试做的是:
ps --ppid $1
但它没有给我 ID。另外,我读过一些关于 pstree 的文章,但我不太清楚如何正确使用它来实现我的目标。任何指导都将不胜感激。谢谢!
答案1
这是元语言设计(未实施,未测试,必须假定不起作用)。实际编码留给学生作为练习。
在bash
脚本中(以 开头#!/bin/bash
):
定义一个ppid
函数,以 PID 作为参数,并返回 PID 的父级。
定义一个children
函数,以 PID 为参数,并返回以空格分隔的列表(“ pid pid pid
”注意尾随空格),其中列出以参数 PID 为父级的 PID。使用该函数检查系统上的所有 PID ppid
。
startPID=$1
childlist="$(children $startPID)"
gchildlist=""
ggchildlist=""
for kid in $childlist ; do
gchildlist="$gchildlist $(children $kid)"
done
for kid in $gchildlist ; do
ggchildlist="$ggchildlist $(children $kid)"
done
echo "Grand : $gchildlist"
echo "Ggrand: $ggchildlist"