簡體   English   中英

bash腳本中的並行性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM