2013-12-17 110 views
3

我有2個shell腳本說a.sh和b.sh計劃在cron,其中第一個a.sh定於早上5點和b.sh將在早上7點運行第二個腳本運行。澄清關於shell腳本調度

有其中指出的先決條件:

1) Only one can run at a time. 
2) The second script b.sh should run only after the first script a.sh completes. 

現在的問題是它超過了第一個腳本a.sh可以早上7點之前完成其執行或在某些情況下可能會超過早上7點的情況下上午7點,第二個腳本也開始了,這將破壞其中一個前提條件。

在這裏我無法啓動第二個腳本當天晚些時候作爲其非常關鍵的腳本。

在這裏,我怎樣才能使這兩種腳本運行一前一後沒有第一個腳本踩着第二腳本。

+0

寫運行'a.sh'包裝腳本,檢查當前時間在有效範圍內,並且在這種情況下運行'b.sh'? –

+0

所以你建議在上午5點安排一個包裝腳本來運行第一個腳本,在完成第一個腳本的exec之後,如果當前時間大於7am,那麼也啓動第二個腳本。那是否正確? –

+1

似乎你有一個捕獲22.一個必須運行在5 &&可以運行過去7. b必須運行在7,但不能運行時運行。微不足道讓它們按順序運行或在特定時間運行,但仍需要在某處放鬆參數。 – BroSlow

回答

1

有a.sh腳本創建鎖文件時,它的完成(最後一行)。

touch ~/a.lck 

在b.sh的開頭:

if [ ! -f ~/a.lck ]; then 
    exit 1 #or whatever you want it to do if the lock file is not there. 
fi 

不要忘了RM鎖文件或者在a.sh的開頭或b.sh結束!