2017-09-22 47 views
0

我正在運行腳本a.sh並行執行b.sh.現在b.sh不應該開始執行它的業務邏輯,除非a.sh完成。爲了在b.sh中實現這一點,我有一個while循環,它在ps -ef命令中使用名稱a.sh進行搜索,但a.sh有很多睡眠命令,所以當執行睡眠時,我在ps中看不到任何結果 - ef命令爲a.sh,而這個過程就像sleep 60如何知道a.sh是否從b.sh執行?

在這種情況下,我能想到的是我在a.sh中設置了一個標誌,其中b.sh可以以某種方式訪問​​。但是我不知道如何在b.sh中訪問這樣的變量,因爲a.sh沒有調用b.sh.

或者我可以創建一個子進程並給它一個自定義名稱並在a.sh的結尾終止它。

以這種方式,在b.sh中,我可以搜索具有該特定名稱的進程,直到它出現在那裏的時候,我都不會開始執行b.sh中的業務邏輯。但我也不知道該怎麼做。

回答

1

爲什麼不讓2溝通?例如,你可以做什麼:

  • a.sh寫入一些臨時文件,它的進展情況
  • b.sh循環讀取文件觀望在該文件中進步的正確的事情。

請注意,可能有一些更容易/更安全的方式來做到這一點(使用信號也許),但我認爲這應該做的工作。請注意您的問題的併發情況。

(不能評論沒有足夠的代表)

相關問題