linuxshell并发执⾏命令
⼀般我们在linux上⼗⼀shell命令的批量执⾏操作,⼀般使⽤for或者while 循环进⾏操作,但是这样有⼀个问题,for或者while本质上是串⾏的,并不能,如果某⼀个命令执⾏耗费的时间⽐较长,就会等待很长的时间,很浪费时间;
将被执⾏的命令运⾏为后台执⾏,可以实现并发执⾏多条命令;
for ((i=0;i<10;i++));do echo "done ";done & wait
但是上述⽅法,如果在i的值很⼤的时候,会产⽣⼤量的进⾏,造成系统严重的问题,所以,需要控制进⾏数,下⾯的脚本会保证同⼀时间只有10个进程在运⾏;
[root@linux-node1 ~]# cat parallel.sh
linux循环执行命令脚本#!/bin/sh
tempfifo=$$.fifo
echo $tempfifo
trap "exec 100>&-;exec 1000<&-;exit 0" 2
mkfifo $tempfifo
exec 1000<>$tempfifo
rm -rf $tempfifo
for ((i=0;i<10;i++))
do
echo >&1000
done
for((i=0;i<300;i++))
do
read -u1000
{
sleep 5
echo "Done!"
echo $i
echo >&1000
}&
echo "--------------"
done
wait
echo "done !!!!!!!!!"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论