2010-10-20 158 views
0

在腳本中,我希望以一種方式監視進程列表,爲了繼續執行腳本,必須啓動某個進程。Shell腳本:啓動監視器任務

我想出了這樣的:

while ! pgrep "process_to_match" 
do 
    sleep 10 
done; 

# the rest of the script 

與該腳本的問題是,如果「process_to_match」啓動不到10毫秒的「腳本的其餘部分」將不被執行。

對我來說,更好的解決方案是觸發「process_to_match」啓動腳本的執行。

任何想法? 謝謝。

回答

2

你可以通過另一種方式檢查進程是否已執行?我的意思是這個過程記錄或修改任何東西?

如果沒有,您可以用shell腳本替換進程(重命名進程並創建一個包含進程文件名的shell),該進程將在運行您正在等待的進程後記錄一些內容。

+0

+1。我第二個這個。 「process_to_match」已經開始的某種合理可靠的通知將會優先考慮。也許它創建一個鎖定文件與它的PID? – 2010-10-20 08:27:58

+0

準確地說,我不能假設任何「process_to_match」的行爲。我只能依靠它的名字。 – gregseth 2010-10-20 08:52:42

+0

你可以用一個可以調用你的重命名過程的shell腳本替換這個過程嗎? – 2010-10-20 09:41:23

0

您的實際需求是什麼?

如果你知道你正在監視的進程的PID,那麼你只需要等待它:

wait $pid 

獲得這個PID是簡單的:

process_to_match & pid=$! 
+0

我不知道PID,我不控制process_to_match的開始,我只是想在這個過程開始時啓動一個腳本。 – gregseth 2010-10-20 08:54:49