并发控制

1
2
3
4
5
6
7
8
9
10
11
#(File Descriptors) FD,文件描述符,文件句柄
#使用文件描述符管理打开的文件
#当一个文件FD未被释放,删除源文件也不会影响
ls /proc/$$/fd  #$$ 当前进程,查看打开的文件描述符
exec 6<> file #手动定义打开文件描述符
echo "test" >> /proc/$$/fd/6  #通过文件描述符写入数据
exec 6<&- #关闭文件
 
#管道也是文件,但只能查看一次,不像静态文件
rpm -qa|grep bash  #匿名管道  只能在一个终端
mkfifo /tmp/fifo1  #命名管道  可以跨终端  命名管道可以视为一个进程的输入,用来另外一个进程的输出

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/bash
thread=5
tmp_fifofile=/tmp/$$.fifo
mkfifo $tmp_fifofile
 
exec 8<> $tmp_fifofile
rm $tmp_fifofile
 
for i in `seq $thread`
do
    echo >&8 #&8简写(/proc/$$/fd/8) 文件描述符
done
 
for i in {1..254}
do
    read -u 8 #-u 从文件描述符读取数据
    {
        ip=192.168.201.130
        ping -c1 -W1 $ip &>/dev/null
        if [ $? -eq 0 ];then
            echo "$ip is up"
        else
            echo "$ip is down"
        fi
        echo >&8 #再写入数据 保证线程梳理
    }&
done
 
wait
echo "finish ...."

  

 

posted @   smatterer  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示