我有多個bash腳本,我試圖在主bash腳本中「並行化」。Unix環境中的多線程/並行Bash腳本
bash腳本:
#!/bin/bash
SHELL=/bin/bash
bash /home/.../a.sh &
bash /home/.../b.sh &
wait
bash /home/.../c.sh &
bash /home/.../d.sh &
bash /home/.../e.sh &
wait
echo "Done paralleling!"
exit 0
我已經正常運行腳本(不含和符號),並與&號,我沒有看到處理時間任何明顯的差異,導致我相信的東西可能不正確編碼/最有效的方式。
很可能,並行實例可能需要更長的時間*,因爲它們都必須使用相同的物理資源:磁盤驅動器)。由於Linux *(et al)*能夠在幕後使用非常有效的緩衝,因此一個* single * process實例可能能夠更加高效地完成I/O請求,而如果它被「埋沒「通過許多進程或多或少做同樣的事情。只需對它進行基準測試,並且如果「&」符號實際上不會在機器上使事情明顯變得更快,那麼就放棄這個想法。 *「哦,這似乎是一個好主意,但是......」* –
如果你正在尋找更多的並行工作,請看看GNU Parallel。它會爲你做很多平行工作,並且是生產質量。 –