• Linux shell ping命令多并发


    #!/bin/bash
    #多线程批量ping,有时候多线程使用&过多,会导致系统崩溃
    #用此方法可以进行多并发
    
    #创建5个进程
    thread=5
    #创建管道文件
    tem_fifofile=/tmp/$$.fifo
    mkfifo $tmp_fifofile
    exec 8<> $tmp_fifofile
    rm $tmp_fifofile
    #删除文件描述符8,并不会正在的删除此文件,此文件还存在
    for i in 'seq $thread'
    do
        echo >&8
        #创建一个管道文件,向里面传入了空值,其实随便什么都行。
    done
    for i in {1....254}
    do 
        read -u 8
        #read -u 这个参数是读取文件描述符 8,如果文件描述符中没有东西,那就一直会等待。
        {
        ip=192.168.1.$i
        ping -c1 -W $ip &>/dev/null
        if [ $? -eq 0 ];then
            echo "$ip is up"
        else
            echo "$ip is down"
        fi
    
        echo >&8
        #执行完后,文件描述符没东西了,那就要再添加进去,不然没得读了,也没得取了。
        }&
        #整体来说就是一次就5个5个来进行多并发,就怕多了导致系统有问题
    done
    wait
    #用户暂停当前进程并释放该进程持有的所有资源。
    echo "ping 完了~~~"
    人生苦短,我用Python
  • 相关阅读:
    git
    HTML5 新增语义化标签
    vue directive 常用指令
    JS 数组 数组迭代方法 map, forEach, filter, some, every,
    图片居中
    进度条
    移动页面 REM自适应
    轮播图基本样式
    webpack3.0
    关于码云中项目提交的问题
  • 原文地址:https://www.cnblogs.com/sunjinchao/p/14413581.html
Copyright © 2020-2023  润新知