当前位置: 首页 > news >正文

那个网站推作者微信朋友圈广告推广代理

那个网站推作者,微信朋友圈广告推广代理,郑州网站制作方案报价,陕西交通建设集团网站贴吧前言 在工作中常遇到如下场景: 系统未接入日志中心,系统本身使用集群部署,那么再查找日志的时候只能一台一台的去搜索关键字,后来运维同学发现这样一台一台效率太低了,于是有了升级版,升级之后的方式还是一…

前言

在工作中常遇到如下场景:
系统未接入日志中心,系统本身使用集群部署,那么再查找日志的时候只能一台一台的去搜索关键字,后来运维同学发现这样一台一台效率太低了,于是有了升级版,升级之后的方式还是一台一台去搜索只不过这次换成了脚本去执行,原理上还是需要在一台上搜索完成之后再去另一台搜素。如果遇到日志相当多的情况,那这种也会很慢。

下面介绍一种今天新学到的技能,就是使用“多线程”的方式去执行脚本,但是这种多线程并不是类似java中的那种多线程,而是触发了多个进程,这里的多线程可以理解为多进程。

管道

在介绍多进程前,先来学习一下管道,一般说到管道,常使用Linux的同学首先会想到“|”,这个管道的意思是将前面的输出通过管道做为后面的输入,可以理解为是一种传输介质,是Linux的一种通信方式,比如ps -ef | grep test 。

那么还有一种管道是FIFO文件,这种文件也可以完成类似上面的工作,比如 ps -ef > .fifo写入文件, 同时在开个客户端就可以获取到通过如下命令获取到数据,grep test .fifo,实际操作一次会发现在写入文件后,如果另一个客户端不对.fifo做任何操作,那么第一个客户端会阻塞住,直到第二个客户端操作了之后第一个才会结束。

FIFO管道文件和普通文件的区别

1、创建方式不同
FIFO管道文件是通过mkfifo命令创建出来的,而普通文件是通过touch命令创建出来的
2、普通文件写入后不会阻塞,FIFO文件写入后会阻塞
3、普通文件时保存在磁盘上的,而FIFO文件是保存在内存中的

“多线程”的实现思路

初级版本:使用&符配合wait实现,这种适用于确定循环次数并且循环次数不是太多。

for ((i=0;i<5;i++));doecho 1{sleep 3;echo "done!"}&
donewait
echo "执行完毕!!!"

升级版本:利用FiFO管道来控制进程数,达到了“多线程”且线程数可控的目的。
如下脚本中的open_thread()函数还可以封装成一个单独的脚本,使用的时候通过source xxx引入来使用,这样看起来更优雅一些。

#!/usr/bin/env bash###################################################
# Describe: grep指定文件夹中的所有文本中的指定关键字 #
# Version: v1.0                                   #
# Author: cz                                      #
#################################################### 开启多线程操作
open_thread() {# 最大进程数PROCESS_NUM=$1# 使用mkfifo命令可以使用指定的名称创建先进先出文件(FIFO)# 创建一个fifo文件FIFO_FILE=./$.fifomkfifo $FIFO_FILE# 关联fifo文件和fd6exec 6<>$FIFO_FILE      # 将fd6指向fifo类型rm $FIFO_FILE# 向fd6中输入$PROCESS_NUM个回车echo ${PROCESS_NUM}for((idx=0;idx<${PROCESS_NUM};idx++))doechodone >&6}# 指定文件夹下的文件并行读取
# 支持 grep key_word file_name
#
#
grep_specified_folder () {echo $1echo $2echo $3# 获取指定文件夹folder=$1# 需要grep的关键字key_word=$2# 定义线程数,如果未定义则默认为5,如何判断是未定义呢,通过参数个数来判断PROCESS_NUM=$3# 临时文件名temporary_file_name='~jef_temp_file'# 开启多线程open_thread $3for filename in $(ls $folder)doread -u6# 每个线程处理一个gerp{result=`grep $key_word $folder/$filename`# 将结果追加到文件中echo "=============="$filename"===========" >> $temporary_file_nameecho "$result" >> $temporary_file_name# 当进程结束以后,再向fd6中加上一个回车符,即补上了read -u6减去的那个echo  >&6}&done# 等待所有的任务执行完毕wait# 关闭fd6exec 6>&-cat $temporary_file_namerm $temporary_file_name
}grep_specified_folder $1 $2 $3
http://www.yayakq.cn/news/849891/

相关文章:

  • 余姚网站建设服务微信开发网站开发
  • 智慧景区网站建设做网站绑定 对应的域名
  • 内蒙古建设兵团网站机关作风建设网站
  • 效果图网站接单wordpress积分兑换
  • 宝安网站设计案例龙华网站建设销售员
  • 公司做网站的费属于广告费么广西网站建设公司招聘
  • 中企动力做的网站好吗建个网站要花多少钱
  • 新乡seo网站推广工具怎么面试一个网站开发的人
  • 网站怎么做支付宝接口瑞安做微网站
  • 红色主题网站模板wordpress 安装502
  • 医疗网站咨询源码wordpress管理员地址
  • 小型教育网站的开发与建设平邑建设银行网站
  • 网站推广怎么做才有效果wordpress 安装插件 ftp
  • 做网站干什么用怎么看网站是谁家做的
  • 如何面试网站开发wordpress非法关键词
  • 网站是怎么优化的广州做一个网站多少钱
  • asp系统网站怎么做优化flash可以做网站
  • wordpress 搞笑网站电子商务网页设计试题
  • 学校网站样式织梦 视频网站源码
  • 北京建站沈阳网站关键词
  • 官方网站下载派的app美术类网站建设费用
  • 浙江大成建设集团有限公司网站网站设计背景图片
  • 国外美容院网站网站建设怎么学习
  • 新乡网站建设策划备案中的网站
  • wordpress更改站点地址wordpress固定连接跳转
  • 网站定制扬州网站建设公元国际
  • 关于网站建设培训哪里找做网站的
  • 做设计那个素材网站最好网页怎么截图
  • 微信公众号私自建设电影网站企业查询天眼查在线查
  • 广州市手机网站建设深圳营销型网站建设-龙华信科