博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并发 ping
阅读量:5828 次
发布时间:2019-06-18

本文共 1103 字,大约阅读时间需要 3 分钟。

[root@RS2 ~]# cat 5.sh#!/bin/bash# 2006-7-12, by wwy#-----------------------------------------------------------------------------------# 此例子说明了一种用wait、read命令模拟多线程的一种技巧# 此技巧往往用于多主机检查,比如ssh登录、ping等等这种单进程比较慢而不耗费cpu的情况# 还说明了多线程的控制#-----------------------------------------------------------------------------------ps (){if ping -c1 -w3 $1 >/dev/null 2>&1thenechoecho $1 is okelseecho $1 is failfi}function a_sub { # 此处定义一个函数,作为一个线程(子进程)sleep 3 # 线程的作用是sleep 3s}tmp_fifofile="/tmp/$$.fifo"mkfifo $tmp_fifofile      # 新建一个fifo类型的文件exec 6<>$tmp_fifofile      # 将fd6指向fifo类型rm $tmp_fifofilethread=100 # 此处定义线程数for ((i=0;i<$thread;i++));do echodone >&6 # 事实上就是在fd6中放置了$thread个回车符#for ((i=0;i<50;i++));do # 50次循环,可以理解为50个主机,或其他for i in 192.168.1.{
1..254};doread -u6 # 一个read -u6命令执行一次,就从fd6中减去一个回车符,然后向下执行,# fd6中没有回车符的时候,就停在这了,从而实现了线程数量控制{ # 此处子进程开始执行,被放到后台#此处填写循环内容ps $i echo >&6 # 当进程结束以后,再向fd6中加上一个回车符,即补上了read -u6减去的那个} &donewait # 等待所有的后台子进程结束exec 6>&- # 关闭df6exit 0

 1到254  线程数位100的话并发ping一共要3次  

for i in {10.0.0.{1..10},192.168.1.{1,2,254}} #不通网段ip

转载于:https://www.cnblogs.com/hanxing/p/4457764.html

你可能感兴趣的文章
linux内核值shmmax问题
查看>>
用javascript获取屏幕高度和宽度等信息
查看>>
phpMyAdmin常见报错的解决方案
查看>>
SpringMVC与Spring、Hibernate整合
查看>>
bootstrap13-边框表格布局
查看>>
nodejs路由模块使用
查看>>
如何学会理解正向代理、反向代理和透明代理
查看>>
前端页面性能参数搜集
查看>>
ubuntu 安装截图工具 Shutter,并设置快捷键 Ctrl+Alt+A
查看>>
索引的选择性
查看>>
weblogic-weblogic问题记录
查看>>
MongoDB创建副本集
查看>>
android的drawable资源
查看>>
访问网络文件共享服务
查看>>
AIX installation guide
查看>>
linux网络详细配置(以CentOS6.7为例)
查看>>
Spring+Struts2+Hibernate整合
查看>>
Redisson官方文档 - 14. 第三方框架整合
查看>>
MySQL的权限
查看>>
HTTP协议和工作原理
查看>>