2017-04-19 32 views
0

嘿你偉大的編碼人,Bash並行dd和mkfs

起初我是bash的總新手,只有一些Java的經驗。 現在,我的任務是製作一個腳本,使其能夠在linux機器上儘可能快速和自動地刷新幾百個USB驅動器,而這是不應該改變的。 所以沒有安裝更多的軟件包。

好吧,現在回答這個問題: 我已經把任務分成兩個小節。

一個過濾lsusb並greps正確的設備,然後啓動一個後臺進程與設備ID複製圖像,並做一些parttiontioning的東西。

主腳本同時過濾新設備併爲它們創建一個新的後臺進程以供複製。 當沒有更適合的設備時,主腳本會等待所有後臺進程完成,然後要求用戶拔出所有設備並將其插入下一組中。

此刻它的工作原理很好,除了dd在一個後臺進程中等待另一個完成。因爲它們應該平行運行並且啓動dd的過程有不同的pid,所以我不知道爲什麼要等待。

下面是腳本的一部分:

的第一個參數是序列號,第二個是要複製的圖像文件的名稱

+0

用四個空格前綴代碼。請看[編輯幫助](http://stackoverflow.com/editing-help)。 – Cyrus

+1

因此,您在後臺啓動發佈的腳本的多個實例,但它們正在串行運行?這不符合這個腳本。您應該(另外)發佈進行背景處理的腳本。 –

+0

這不是整個發佈的腳本,這是串行運行,它只是dd部分。 使用ps aux,我可以看到我開始的所有後臺進程都在運行,但只有一個dd進程,並且當它完成時會啓動一個新進程。 我以 ./flash.sh $ temp_serial $ Image& –

回答

0

你可以嘗試將sync從線移動8到echo "all connected devices are flashed, please change devices"以上的行或等待所有操作完成後的另一行(wait $i)。