#! /bin/bash
#############################
# 批量查询日志工具
# create: 2015-12-24
# author: zhouxiliang
#############################
help(){
cat << EOF
使用方法: sh $0 -f hosts -e "script" -c 10
hosts : ip文件
script :每台服务器要执行的命令
-c 10 : 代表使用10个线程并发执行
EOF
exit 0
}
if [ $# -lt 6 ] ; then
help
fi
#echo "$1 $2 $3 $4"
# 1. 获取要执行的机器 和 指令
HOSTS_FILE="";
SCRIPT="";
THREADS=10;
while getopts "e:f:c:" OPT;do
case $OPT in
f)
HOSTS_FILE="$OPTARG"
;;
e)
SCRIPT="$OPTARG"
;;
c)
THREADS=$OPTARG
;;
*)
help
exit;
;;
esac
done
# 创建管道
tmp_file="/tmp/$$.fifo"
mkfifo $tmp_file
exec 6<>$tmp_file
rm $tmp_file
# 向管道输入线程
for ((i=0;i<$THREADS;++i)) ; do
echo
done >& 6
#读取要执行的机器ips
while read host ; do
hostarr=$hostarr" "$host
done < $HOSTS_FILE
#echo $hostarr
#多线程执行任务
for host in $hostarr ; do
read -u6
{
echo ">>>> $host start executing..."
ssh $host "$SCRIPT" 2> /dev/null
echo >& 6
} &
done
#等待后台线程结束
wait
#删除管道
exec 6>$-
exit 0
Shell 多线程
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 多线程加了引号,是因为shell脚本语言中并没有多线程的机制,所谓的多线程实际上是脚本中对命令或者命令集合的作业控...
- 情景 shell脚本的执行效率虽高,但当任务量巨大时仍然需要较长的时间,尤其是需要执行一大批的命令时。因为默认情况...