#(File Descriptors) FD,文件描述符,文件句柄 #使用文件描述符管理打开的文件 #当一个文件FD未被释放,删除源文件也不会影响 ls /proc/$$/fd #$$ 当前进程,查看打开的文件描述符 exec 6<> file #手动定义打开文件描述符 echo "test" >> /proc/$$/fd/6 #通过文件描述符写入数据 exec 6<&- #关闭文件 #管道也是文件,但只能查看一次,不像静态文件 rpm -qa|grep bash #匿名管道 只能在一个终端 mkfifo /tmp/fifo1 #命名管道 可以跨终端 命名管道可以视为一个进程的输入,用来另外一个进程的输出
#!/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 ...."
标签:tmp,文件,控制,ip,fifofile,echo,并发,描述符 From: https://www.cnblogs.com/smatter/p/16940178.html