shell并发控制

shell并发控制


文件描述符(FD):进程用来管理打开的文件

shell> ll /proc/$$/fd
# $$ 表示当前进程
lrwx------ 1 root root 64 3月  10 18:48 0 -> /dev/pts/1
lrwx------ 1 root root 64 3月  10 18:48 1 -> /dev/pts/1
lrwx------ 1 root root 64 3月  10 18:48 2 -> /dev/pts/1
lrwx------ 1 root root 64 3月  10 20:25 255 -> /dev/pts/1
0 标准输入
1 标准输出
2 错误输出
255 其他文件

多进程并发ping

#!/bin/bash
thread=5
tmp_fifofile=/tmp/$$.fifo
mkfifo $tmp_fifofile
exec 9<> $tmp_fifofile
rm $tmp_fifofile
for i in `seq $thread`
do
        echo >&9
done

for j in {1..254}
do
        read -u 9
        {
        ip=192.168.31.$j
        ping -c1 $ip &>/dev/null
        if [ $? -eq 0 ];then
                echo "$ip is up"

        else
                echo "$ip is down"
        fi
        echo >&9
        }&
done
wait
exec 9>&-
echo "ping finsh"

你可能感兴趣的:(shell并发控制)