美文网首页程序员
FD加命名管道做到控制多进程

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

作者: 南南宫问天 | 来源:发表于2020-04-29 11:56 被阅读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个

相关文章

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

    生产中当我们遇到遇到一个操作需要重复处理时,我们可以通过脚本加多进程的方式来做到快速处理,但是如果这个操作要打开的...

  • 操作系统知识梳理

    (一)进程间的通信方式 管道中还有命名管道和非命名管道之分,非命名管道只能用于父子进程通讯,命名管道可用于非父子进...

  • 无名管道

    无名管道是父子进程通信的手段,没有关系的进程是不能使用无名管道的 int fd[2];if (pipe(fd) =...

  • Linux 进程间通信

    进程间通信 一 进程间通信 -- 管道 mkfifo test 创建管道文件 匿名管道和命名管道:匿名管道:匿名管...

  • 管道

    管道作用:用于进程间通信 分类:普通管道 命名管道 普通管道: 普通管道允许两个进程按生产者消费者方式进...

  • Windows进程间通信之管道

    命名管道(Named Pipe)是服务器进程和一个或多个客户进程之间通信的单向或双向管道。不同于匿名管道的是命名管...

  • 系统编程-文件操作5

    作业 通过无名管道,让两个子进程间完成相互通信工作 命名管道 创建一个命名管道 在命名管道里插入数据 首先在一个终...

  • 进程间通信

    每个进程都有各自的进程地址空间,所以进程之间的交互就需要通过内核了. 进程间通信方式:管道命名管道 XSI IPC...

  • Linux系统编程:Inter-Process Communic

    一、IPC——进程间通信 Linux系统提供的进程间通信的手段: 消息传递类:信号 匿名管道 命名管道 socke...

  • day05

    通过无名管道,让两个子进程间完成相互通信工作 运行结果: 命名管道和一般的管道基本相同,区别:1,命名管道在文件系...

网友评论

    本文标题:FD加命名管道做到控制多进程

    本文链接:https://www.haomeiwen.com/subject/pijgwhtx.html