2014-09-04 86 views
0

我必須運行三個阻塞的linux命令(command1,command2 & command3),並且我實現了同步,以便如果用戶在terminal1中執行command2時使用terminal2而我的服務器返回一個錯誤稱command1仍在執行。與command3相同。但如果我做一個像下面的循環在後臺運行linux命令的同步問題

for i in {1..3}; do { command$i & }; done 

所有三個開始執行並行是不受歡迎的。這是同步故障還是我不應該用這種方式運行這些命令?在後臺運行命令與在不同終端運行命令不同嗎?

我覺得我錯過了一些明顯的東西。請賜教。

回答

0

&符將作業置於後臺,後臺立即返回並具有並行運行它們的效果。要連續運行它們,請刪除&。

+0

我明白這一點。但我的問題是他們爲什麼要開始呢?這是我的同步錯誤嗎?如果我嘗試在command1仍在執行時使用不同的終端來運行command2,我會得到預期的錯誤,說明command1仍在執行。 – yalkris 2014-09-04 17:44:58

+2

工作2在工作1中正在進行的任何同步建立之前就開始了。要旨? – seanmcl 2014-09-04 17:47:28

+0

對不起,我感到困惑。我不希望他們順序運行。我的問題純粹是強制執行同步,所以它們在並行運行時失敗。我相應地編輯了我的問題。 – yalkris 2014-09-04 18:19:25