【发布时间】:2018-05-29 09:00:50
【问题描述】:
我对 BASH shell 如何分配 PID 有点困惑,所以我需要你的帮助来理解这一点,我想在这里解决一个问题。我在 shell 脚本中调用一个函数。该函数在后台运行另一个 groovy 脚本,如下所示:
fn_list()
{
... ... ...
groovy list_gn.gy -p $prop_file $@ &
echo "Extracting PID No :$!" >> $logpid
}
我在循环中这样调用这个函数:
for x in `cat $list | grep -v '#'`; do
fn_list &
echo "Extracting function PID No :$!" >> $logpid
done
因为我在后台运行这个函数,而且这个函数运行的 groovy 也在后台运行(使用 &)。
我的问题是我正在记录函数的 PID,并且我还在记录从该函数内部调用的 groovy 脚本的 PID。函数的 PID 和从这个函数内部调用的 groovy 会不同吗?这是记录 PID 的正确方法吗?
我需要了解它的行为,因为我计划将函数进程分叉 3 次。所以要绝对确定这是否是正确的方法。
【问题讨论】:
-
子进程在它们自己独立的 shell 中运行。只要您使用
$!,您就可以安全地获取他们的 id,并且澄清一下,您的逻辑中的两个 id 会有所不同