[英]Parallelism in bash script
我有一個正在啟動一些虛擬機的腳本。 部署后,我想在VM上安裝一些東西。 因為這些安裝每個虛擬機最多可能需要6分鍾。 並行執行這些安裝將更加有效。 在Java中,我可能會使用線程,但是在bash腳本中,我不知道。 我的第一種方法是這樣的:
function install {
plink -ssh -i /var/lib/one/Downloads/id_rsa_ubuntu_putty..ppk root@$1 wget https://www.dropbox.com/s/xdhnx/install.sh
plink -ssh -i /var/lib/one/Downloads/id_rsa_ubuntu_putty..ppk root@$1 chmod 4500 install.sh
plink -ssh -i /var/lib/one/Downloads/id_rsa_ubuntu_putty..ppk root@$1 ./install.sh
echo $1 angestoßen
}
echo -------------------------------------------------
echo Alle VMs erfolgreich deployed
for i in "${IParray[@]}"
do
install $i &
done
wait
我創建了一個功能,並嘗試使用應該創建子流程的“&”在for循環中連接函數調用。 但是對於某些情況,這卻無法正常工作。 有人可以幫我嗎
也許像這樣使用GNU Parallel:
#!/bin/bash
IParray=(192.168.0.1 192.168.0.2)
function install {
echo $1
# plink...
}
# Make install() visible to GNU Parallel
export -f install
# Run a bunch of installs in parallel
parallel install ::: ${IParray[@]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.