修改日期 | 修改人 | 备注 |
2020-06-23 13:30:19[当前版本] | 文艺范儿 | 格式调整 |
2020-06-23 12:32:13 | 文艺范儿 | 创建版本 |
需求:
脚本:
#!/bin/bash scripts_name=$(basename $0) scripts_dir=$(cd `dirname $0`;pwd) log_file=/var/log/${scripts_name}.log #线程数 thred=20 #注意:如果是一个参数测不需要引号 url=" http://222.222.222.222 https://222.11.11.11 https://222.221.111 https://111.222.111 " echo "===========================" >> $log_file echo "Start: $(date +"%Y-%m-%d %H:%M.%S")" >> $log_file #创建管道 [ -e /tmp/fd1 ] || mkfifo /tmp/fd1 exec 3<>/tmp/fd1 rm -f /tmp/fd1 #控制线程,为并发线程创建相应个数的占位 { for (( i = 1 ;i<=${thred};i++ )) do echo; done } >&3 #将占位信息写入管道 for i in ${url[@]} do read -u3 #读取一行,即fd1中的一个占位符 { n=`curl -sk ${i}/block?height= |egrep height|head -n1|sed 's#\"height\"\:\ ##g'|sed 's#,##g'|sed 's#\ ##g'` sleep 10 p=`curl -sk ${i}/block?height= |egrep height|head -n1|sed 's#\"height\"\:\ ##g'|sed 's#,##g'|sed 's#\ ##g'` if [ $n -lt $p ] ;then echo "ok,url:${i},height:$n,new height:$p" >> $log_file else echo "no,height:$n,new height:$p" >> $log_file echo -e "msg 6x_zabbix_zhulian_exigence 特别注意:${i} 1分钟没有出新块:height:$n,new height:$p" | nc localhost 8890 fi echo >&3 #任务执行完后在fd1种写入一个占位符 } & #&表示该部分命令任务并行处理 done <&3 #指定fd1为整个for的标准输入 wait #等待所有在此shell脚本中启动的后台任务完成 exec 3>&- #关闭管道 echo "Stop: $(date +"%Y-%m-%d %H:%M.%S")" >> $log_file