智能
助手
最大化  清空记录 停止  历史记录
翻译选中文本
选中一段文本后进行翻译
名词解释
选中一段文本后进行名词解释
知识图谱生成
通过图谱展示知识信息
登录用户在知识浏览页面可用
答案生成
AI自动回答一个问答功能中的问题
登录用户在问答浏览页面,且问题开放回答中可用
知识摘要
自动为当前知识生成摘要
知识浏览页面可用
知识问答
针对当前知识进行智能问答
知识浏览面可用
2020-06-23 13:30:19 版本 : shell多线程脚本实现
作者: 文艺范儿 于 2020年06月23日 发布在分类 / Linux / 常用shell脚本 下,并于 2020年06月23日 编辑
 历史版本

备注 修改日期 修改人
格式调整 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=50

#注意:如果是一个参数测不需要引号
url="
https://earth
https://venus
https://jupiter
https://mercury
"

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'`

diffheight()
{
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种写入一个占位符
}

if [ "$n" -gt 0 ] 2>/dev/null ;then
  diffheight
else
  echo "no,url:${i},height:$n,new height:$p" >> $log_file
  echo -e "msg  6x_zabbix_zhulian_exigence 特别注意:${i} 获取区块高度错误:height:$n,new height:$p" | nc localhost 8890
fi

} &           #&表示该部分命令任务并行处理
done <&3      #指定fd1为整个for的标准输入 
wait          #等待所有在此shell脚本中启动的后台任务完成 
exec 3>&-     #关闭管道 

echo "Stop: $(date +"%Y-%m-%d %H:%M.%S")" >> $log_file

历史版本-目录  [回到顶端]
    文艺知识分享平台 -V 5.2.5 -wcp