我有以下問題:我有一個由執行內部後臺進程的腳本:如何獲得一個由腳本父腳本中的腳本調用進程的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執行來解決問題,但它讓我爲難,如果我想做的事本來可以實現的。
有何評論?