我有以下问题:我有一个由执行内部后台进程的脚本:如何获得一个由脚本父脚本中的脚本调用进程的PID
====myinternalscript====
...
myinternalscript-program &
...
这是从一个叫通过对myinternalscript程序终止等待脚本:
====mainscript====
...
myinternalscript
while [ "$(ps -u ${CURRENT_USER} | grep myinternalscript-program)" ];
...
问题是当我想再次拨打mainscript第一次调用之前结束。这使得,如果与第一通话myinternalscript程序第二myinternalscript程序之前结束第一个呼叫mainscript结束,暂停状态仍然为真(因为由称为myinternalscript程序第二mainscript调用)和第一mainscript调用不会前进,直到第二mainscript称为myinternalscript程序也完成。
我的解决办法是:
====mainscript====
...
myinternalscript
internalpid = #some way to get the myinternalscript-program PID
while [ "$(ps -u ${CURRENT_USER} | grep myinternalscript-program| grep $internalpid)" ];
...
其中 “internalpid” 有myinternalscript的执行过程中被称为myinternalscript程序的PID。
正如其中一个答案所示,$!在myinternalscript程序后可以给我我需要在myinternalscript PID信息,然后我可以想像一些方法来获取这些信息mainscript,但我没有权限编辑myinternalscript。在此背景下面临的挑战是:
如何得到myinternalscript程序 PID在mainscript 没有编辑myinternalscript?
很显然,我也可以使用一些其他的方式来暂停mainscript执行来解决问题,但它让我为难,如果我想做的事本来可以实现的。
有何评论?