服务器负载监控以及文字处理脚本
时间:2022-04-22
本文章向大家介绍服务器负载监控以及文字处理脚本,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
运维监控总少不了一些脚本来监控自己的机器,博主自己写了个监控,并通过sleep来控制输出的间隔时间。如果想要获取其他的相关信息,可以采用类似的方式,添加即可。
首先是服务器的负载监控脚本,主要输出了 内存,CPU,网络连接等信息
#!/bin/sh
while true
do
TOP=`top -b -n 2 | grep Cpu |tail -2`
FREE=`free -m`
SWAP=`echo $FREE | grep Swap | cut -d":" -f 4`
MEM=`echo $FREE | grep Mem | cut -d: -f 2`
#cpu status##########################################################
IDLE=`echo $TOP | awk '{print $14}'| sed s/id,//`
#swap status#########################################################
swap_total=`echo $SWAP | awk '{print $1}'`
swap_free=`echo $SWAP| awk '{print $3}'`
#mem status##########################################################
mem_total=`echo $MEM| awk '{print $1}'`
mem_used=`echo $MEM | awk '{print $2}'`
mem_free=`echo $MEM| awk '{print $3}'`
caches=`echo $MEM| awk '{print $6}'`
#tcp status##########################################################
closed_wait=`netstat -an| awk '/^tcp.*CLOSED_WAIT/' | wc | awk '{print $1}'`
established=`netstat -an| awk '/^tcp.*ESTABLISHED/' | wc | awk '{print $1}'`
#date infomation####################################################
DATE=`date +"%F %T"`
#echo all the infomation############################################
echo $DATE" "$IDLE" "$mem_total" "$mem_used" "$mem_free" "$caches" "$swap_total" "$swap_free" "$closed_wait" "$established >> Load.log
sleep 1
done
然后是单独列出 日期时间以及CPU负载的 文本处理脚本,主要进行了自动的筛减数据,及分列处理
#!/bin/bash
count=1
num=10
while read line;do
((count++))
{
if [ $count -eq $num ];then
count=1 && echo $line >> odb.txt
fi
}
done < db.txt
最后是脚本输出的最后处理,过滤掉CPU获取失败的行,并把CPU空闲转化为CPU的利用率。最后的脚本效率极差,可以进行优化。
#!/bin/bash
while read line;do
{
READ=`echo $line | awk '{print $3}'`
WE="0.0%wa,"
NUM=`echo $READ | tr -cd '0-9'`
NUM1=`echo $NUM | sed 's/(.)$/.1/g'`
RESULT=`echo "scale=3;1000-$NUM1"|bc`
RERE=`echo $RESULT | sed 's/.*(...)$/1/'`
HAHA=`echo $line | awk '{print $1,$2}'`
if [ $READ != $WE ];then
echo $HAHA $RERE% >> idb.txt
fi
}
done < odb.txt
- 工具| NSE漏洞审计和渗透脚本的demo
- Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件
- 厚土Go学习笔记 | 12. if 语句
- 厚土Go学习笔记 | 11. for循环 go语言只有for循环
- 从编译原理看一个解释器的实现
- 厚土Go学习笔记 | 10. 常量 与 数值常量
- Unity应用架构设计(7)——IoC工厂理念先行
- 厚土Go学习笔记 | 09. 类型转换 与 类型推导
- 厚积薄发,拥抱 .NET 2016
- 厚土Go学习笔记 | 08. 零值
- Unity应用架构设计(10)——绕不开的协程和多线程(Part 1)
- 代码审计|PHP代码执行函数进阶版实力上线了!
- Golang中巧用defer进行错误处理
- Unity应用架构设计(10)——绕不开的协程和多线程(Part 2)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- lldb 入坑指北(3) - 打印 c++ 实例的虚函数表
- 一文让你彻底搞懂`__str__`和`__repr__`?
- lldb 入坑指北(1) - 给Xcode批量添加启用&禁用断点功能
- Xcode 中的 Workspace、Project、Target 和 Scheme
- 学习Python一年,这次终于弄懂了浅拷贝和深拷贝
- 为速度而生的构建系统 - Ninja
- Python面试题:字符串连接
- Python面试突击
- 我半夜爬了严选的女性文胸数据,发现了惊天秘密
- 二分查找(Python实现)
- 图解JavaScript——代码实现【2】(重点是Promise、Async、发布/订阅原理实现)
- 编译器 bug 系列(1)
- 面试高频:反转链表
- 存储过程
- 为什么别人不想回答你提的问题?