10

如果我小时候启动一个 bash 脚本,我可以使用 $$ 将它自己的 pid 传递给父级。

有什么方法可以找到我从后台脚本启动的程序的 pid,例如:

ping x.x.x.x &

那个 ping 的 pid 是什么?

(我只希望我正确地表达了自己……我的英语不是最好的)

PS。我正在寻找一个简单而干净的解决方案,我可以想象这样的事情:

ping -t10000 -W10 x.x.x.x &
then
ps ax | grep 'ping -t10000 -W10 x.x.x.x'$

但是太复杂了,甚至我用开关来个性化它也不干净,它可能会捕获系统中的另一个进程

4

2 回答 2

20

该变量$!具有您启动的最后一个后台进程的 PID。

于 2012-05-24T11:58:08.517 回答
6

使用这个:$!在执行你想要的 PID 的命令之后。这意味着,尽管您需要&在命令后使用与号 ( ) 来在后台启动它。例如:

my_command & CMDPID=$!
echo "$CMDPID"
于 2012-05-24T11:58:38.693 回答