如果我作为孩子启动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'$
但是太复杂了,甚至我用开关来个性化它不干净,它可能会捕获系统中的另一个进程
答案 0 :(得分:19)
变量$!
具有您开始的最后一个后台进程的PID。
答案 1 :(得分:6)
在执行所需PID的命令后立即使用:$!
。这意味着,虽然您需要在命令后使用&符号(&
),但要在后台启动它。 E.g:
my_command & CMDPID=$!
echo "$CMDPID"