2015-04-02 142 views
0

我想寫一個shell腳本shell腳本的執行順序

  1. 啓動一個過程,從數據的基礎上獲取數據,並和寫入文件(時間做到這一點從5分鐘變化 - 幾個小時)
  2. 使用在生成的文件中的數據,並做一些計算

我可以在外殼使用什麼命令暫停,直到我的第一個過程完成後執行第二部分作爲第二部分不應該開始直到寫入前到文件是完整的?

+0

完成之前對第一部分的回報是否命令(即它在後臺運行)?因爲如果它只在完成時才返回,那麼你不需要爲此做任何事情。如果它在後臺運行,那麼你是否有一些方法可以知道它何時完成? – 2015-04-02 16:44:12

+0

是的,它返回之前返回,並嘗試執行第二部分,而寫入文件尚未完成。 – Javad 2015-04-02 16:48:35

+0

它以某種方式表示完成信號?你怎麼知道什麼時候結束? – 2015-04-02 16:51:28

回答

0

我認爲您正在尋找wait命令,但它取決於如何啓動第1部分。

+1

如果第1部分中的過程是自我背景或守護進程或某些其他情況,這將無濟於事。如果他手動背景的話,那麼這樣做會更簡單,但是不要那樣做(除非這個任務的一些未指定的部分是必需的)。 – 2015-04-02 16:45:27

+0

@EtanReisner:OP詢問'直到我的第一個進程完成「。如果你是自我背景的,那麼你在技術上已經完成了。 – bitmask 2015-04-02 16:48:32

1

那麼,你並不需要一個命令。殼牌應該簡單地被阻塞,直到催生子進程終止:

proc1 
proc2 # <- will not be called until proc1 is done. 

事情只有當你做這樣的東西變得複雜:

proc1 & 
proc2 # <- will start immediately after proc1 was launched 

在這種情況下,你將不得不wait,作爲Politank-Z點out:

proc1 & 
wait 
proc2 

這沒什麼意義。


編輯:你的澄清

後,你必須得到第一個進程向你傳達其子進程ID和檢查,要完成。粗嘗試將定期檢查

ps x | grep -v grep | grep "$spawnedPID" 

(假設子進程是不是grep命令本身)

+1

您無法在非子進程上「等待」。 – 2015-04-02 16:51:13

+0

@EtanReisner:你在技術上是正確的。最好的一種正確。我以爲你能夠等待盛大的孩子進程。正在編輯... – bitmask 2015-04-02 20:15:20