Boot

rc.local,順序呼叫命令(一個在完成另一個之後)

  • October 10, 2014

我期待在rc.local,如果說我在一行中呼叫程序P1然後P2在下一行中,P2只會在之後執行P1(成功執行取決於它)。這是 bash 腳本中的行為。但是,啟動我的機器後,P2並沒有完成。所以我的猜測是所有寫入的命令rc.local都是並行執行的,並且P1P2. 我想這種行為對守護程序是有意義的……

如果它是並行的,我可以通過使用&&運算符或創建包裝腳本來解決這個問題。不過,我想確認這種行為:

rc.local,新行中的命令是順序執行還是並行執行?

來自rc.local的行不並行執行。它將像任何其他 bash 腳本一樣以相同的順序執行。

不要猜測為什麼P2沒有執行,通過記錄它的輸出來確定。例如:

P1 > /tmp/P1.startup 2>&1
P2 > /tmp/P2.startup 2>&1

如果P1必須在執行之前成功完成,P2那麼您需要設置一個 if true 語句。其中之一將起作用:

P1 && \
P2

或者

P1
test $? -eq 0 && P2

或者

P1
if [[ $? == 0 ]]
then
 P2
fi

引用自:https://serverfault.com/questions/635133