楼上的各位有点为了工具而工具哇,能原生先原生,能内置先内置。
并发其实就是靠多线程或者多进程来实现。shell脚本不支持多线程,那就fork出shell子进程来达到并行的效果好了。
这是我写的批量发布一组服务器的脚本,可以参照改一改。
第12行fork出ssh子进程执行命令
batch(){
counts=1
array=($(cat $3))
for server in ${array[*]}
do
echo "发布第${counts}台: ${server}"
if [ -z "${ACTION}" ]
then
ACTION="start"
fi
(nohup ${DEPLOY_SCRIPT} $1 $2 $server ${ACTION} &)
let "r=${counts}%${GROUP_SIZE}"
if [ $r == 0 ]
then
echo "一组${GROUP_SIZE}台发布完毕,休眠${REST_SECONDS}秒"
sleep ${REST_SECONDS}
fi
let "counts=${counts}+1"
done
}