程序员

FD加命名管道做到控制多进程

2020-04-29  本文已影响0人  南南宫问天

生产中当我们遇到遇到一个操作需要重复处理时,我们可以通过脚本加多进程的方式来做到快速处理,但是如果这个操作要打开的进程数量过于庞大时,此时我们的服务器可能承载不了这么重的负担,我们就可以通过FD加命名管道做到控制多进程.

[root@git scripts]# cat ping_thread.sh 
#!/bin/sh
therad=10
tmp_fifofile=/tmp/$$.fifo 

mkfifo $tmp_fifofile
exec 7<> $tmp_fifofile ##打开一个进程文件
rm -rf $tmp_filefofile
    
for i in `seq $therad`
do
    echo >&7  ##输入空格到进程文件,一个10个
done
for i in {1..254}
do 
    read -u 7  ##读取线程文件
  {
    IP=172.16.210.$i
   ping -c1 -W1 $IP > /dev/null 2>&1
   [ $? -eq 0 ] && echo "$IP" 
    echo >&7 ##输入一个空格到进程文件
   }&
done 
wait
exec 7>&- ##关闭进程文件
echo "在线ping测试完成" 
[root@git scripts]# sh ping_thread.sh  ##执行脚本
172.16.210.1
172.16.210.13
172.16.210.12
172.16.210.36

在另外一个终端查看进程

[root@git ~]# ps aux | grep "ping -c1" 
root      4380  0.0  0.0 128444  1264 pts/0    S+   11:51   0:00 ping -c1 -W1 172.16.210.34
root      4383  0.0  0.0 128444  1264 pts/0    S+   11:51   0:00 ping -c1 -W1 172.16.210.35
root      4387  0.0  0.0 128444  1260 pts/0    S+   11:51   0:00 ping -c1 -W1 172.16.210.37
root      4389  0.0  0.0 128444  1264 pts/0    S+   11:51   0:00 ping -c1 -W1 172.16.210.38
root      4391  0.0  0.0 128444  1264 pts/0    S+   11:51   0:00 ping -c1 -W1 172.16.210.40
root      4393  0.0  0.0 128444  1264 pts/0    S+   11:51   0:00 ping -c1 -W1 172.16.210.39
root      4394  0.0  0.0 128444  1268 pts/0    S+   11:51   0:00 ping -c1 -W1 172.16.210.41
root      4396  0.0  0.0 128444  1264 pts/0    S+   11:51   0:00 ping -c1 -W1 172.16.210.42
root      4398  0.0  0.0 128444  1264 pts/0    S+   11:51   0:00 ping -c1 -W1 172.16.210.43
root      4400  0.0  0.0 128444  1264 pts/0    S+   11:51   0:00 ping -c1 -W1 172.16.210.44
root      4402  0.0  0.0 112728   976 pts/1    S+   11:51   0:00 grep --color=auto ping -c1

成功控制进程在10个

上一篇 下一篇

猜你喜欢

热点阅读