《懒人Shell脚本》之四——日志条数动态实时统计

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 1、需求点1)输入:日志实时更新:当前日志表以秒级更新日志,每秒有多条日志更新。格式如下:

2016-08-11 11:02:09

2016-08-11 11:02:09

2016-08-11 11:02:09

2016-08-11 11:02:09

2016-08-11 11:02:10

2016-08-11 11:02:10

2016-08-11 11:02:10

2016-08-11 11:02:10

2016-08-11 11:02:10

2016-08-11 11:02:10

2016-08-11 11:02:10

2016-08-11 11:02:10

2016-08-11 11:02:11

2016-08-11 11:02:11

2016-08-11 11:02:11

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

2)实时输出:每个时刻值对应的2016-08-11 11:06:56 47

2016-08-11 11:06:57 18

2016-08-11 11:06:58 44

2016-08-11 11:06:59 22

2016-08-11 11:07:00 42

2016-08-11 11:07:01 44

2016-08-11 11:07:02 12

2016-08-11 11:07:03 37

2016-08-11 11:07:04 18

2016-08-11 11:07:05 18

2016-08-11 11:07:06 38

2016-08-11 11:07:07 48

2016-08-11 11:07:08 38

2016-08-11 11:07:09 21

2016-08-11 11:07:10 31

2016-08-11 11:07:11 18

2016-08-11 11:07:12 20

2016-08-11 11:07:13 3

2016-08-11 11:07:14 43

要求:一行脚本完成统计。


2、脚本实现原理

1)循环产生时间值,并写入文件。

时刻值的产生需要注意时间和时间戳的#时间形式打印

[root@laoyang zq_testing]# tcurtime=date "+%F %T"

[root@laoyang zq_testing]# echo $tcurtime

2016-08-11 11:15:06


2)时间转化为时间戳

[root@laoyang zq_testing]# scurtime=date -d "$tcurtime" +%s

[root@laoyang zq_testing]# echo $scurtime

1470885306


3)时间戳转化为时间

[root@laoyang zq_testing]# tcurtime=date -d @$scurtime "+%F %T"

[root@laoyang zq_testing]# echo $tcurtime

2016-08-11 11:15:06


4)循环环读取文件,使用awk的词频统计功能完成频率统计。

3、脚本实现

#构造时间脚本

[root@laoyang zq_testing]# cat build_time.sh

#!/bin/sh

#generate random values

function random()

{

 min=$1;

 max=$2

 randomval=$((RANDOM%$max+$min))

 echo $randomval

}


#generate time values

function build_conn_time()

{

 rm -rf ./output.log

 touch ./output.log

 cat /dev/null > ./output.log


 tflag=0

 nextsecond=0

 while :

 do

 if [[ $tflag -eq 0 ]];then

 tcurtime=`date "+%F %T"`

 echo "xtcurtime="$tcurtime

 tflag=1

 else

 #时间戳转化为时间

 tcurtime=`date -d @$nextsecond "+%F %T"`

 echo "next tcurtime="$tcurtime

 fi


 #时间格式化 为时间戳

 scurtime=`date -d "$tcurtime" +%s`


 #产生2-50之间的随机数

 cyccnt=$(random 2 50);

 if [[ -z $cyccnt ]]; then

 cyccnt=10

 fi

 echo "cyccnt="$cyccnt

 i=0

 while (( $i<$cyccnt))

 do

 echo $tcurtime >> output.log

 i=$(($i+1))

 done


 #更新下一秒 ,时间戳可以求和操作

 nextsecond=$(($scurtime+1))

 sleep 1

 done

}


build_conn_time;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

一行指令完成统计

root@laoyang zq_testing]# while : ; do cat output.log | sort | awk '{ count[$0]++ }\

END { printf("%-14s %s\n","curtime","Count");\

for(ind in count)\

{ printf("%-14s %d\n",ind,count[ind]); } }' | sort ; sleep 1 ; done

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
2月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
420 9
|
2月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
310 2
|
5月前
|
Shell
Shell脚本循环控制:shift、continue、break、exit指令
使用这些命令可以让你的Shell脚本像有生命一样动起来。正确使用它们,你的脚本就能像一场精心编排的舞蹈剧目,既有旋律的起伏,也有节奏的跳跃,最终以一场惊艳的表演结束。每一个动作、每一个转折点,都准确、优雅地完成所需要表达的逻辑。如此,你的脚本不只是冰冷的代码,它透过终端的界面,跳着有节奏的舞蹈,走进观众——使用者的心中。
270 60
|
2月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
8月前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
4月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
560 0
|
6月前
|
存储 Unix Shell
确定Shell脚本在操作系统中的具体位置方法。
这对于掌握Linux的文件系统组织结构和路径方面的理解很有帮助,是我们日常工作和学习中都可能使用到的知识。以上讲解详细清晰,应用简便,是每一个想要精通操作系统的计算机爱好者必备的实用技能。
182 17
|
6月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
199 4
|
6月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
402 3
|
7月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
630 25