牙科医院网站开发,优秀设计方案网站,品牌策划公司网站,做网站时图片要切片有什么作用目录
知识概览
总体脚本编写
date
awk
grep
bc 知识概览 总体脚本编写 #!/bin/bash#定义日志的文件名和日期
cdate$(date %Y%m%d%H%M%S)
logfile/tmp/memlog_{$0}.log#拿到ip
ip_addr$(ip add|grep ens33$|awk {print $2})#总内存和使用的内存
m…目录
知识概览
总体脚本编写
date
awk
grep
bc 知识概览 总体脚本编写 #!/bin/bash#定义日志的文件名和日期
cdate$(date %Y%m%d%H%M%S)
logfile/tmp/memlog_{$0}.log#拿到ip
ip_addr$(ip add|grep ens33$|awk {print $2})#总内存和使用的内存
mem_all$(free -m|head -2|tail -1|awk {print $2})
mem_used$(free -m|head -2|tail -1|awk {print $3})#计算使用率
percent$(echo scale2;$mem_used/$mem_all*100|bc)#定义一个警告的阈值然后进行比较
thereshold80
flag$(echo $percent $thereshold|bc)
if (( $flag 1 ));thenecho $cdate $ip_addr Total:{$mem_all}M Mem used:${percent}% $logfile
elseecho 内存的使用率在合理范围内
fi
date
这里写一个日志所以获取具体时间来做日志命名非常需要注意的是date与之间一定要打一个空格没有空格的话就会报错
#定义日志的文件名和日期
cdate$(date %Y%m%d%H%M%S)
logfile/tmp/memlog_{$0}.log
awk
head和tail在前面的文章中已经讲过所以这里不做过多的赘述两者通过管道符号可以获得你想要的任何一行
#总内存和使用的内存
mem_all$(free -m|head -2|tail -1|awk {print $2})
mem_used$(free -m|head -2|tail -1|awk {print $3})free -m这个可以获取内存的信息 total---总内存大小 used---使用了的内存大小 free---没有使用的 shared----共享内存其实也是使用的有的程序可以共享内存空间 buff/cache---buff是指缓存是属于内存空间的临时存放数据的地方。cache是读取磁盘里的数据到内存里的临时存放数据的地方 available---可用的内存空间给下一个程序可以使用的内存空间一个理论值。
获得了指定行之后使用awk可以做文本提取这里每个空格代表一个位置变量通过$2,$3可以获得对应的数字。
grep
#拿到ip
ip_addr$(ip add|grep ens33$|awk {print $2})
ip add命令可以获取机器ip grep作为文本抓取工具通过 引起要找的关键字可以找到对应的行数这里找到ens33结尾的行这一行正好是ip所在行由此获得ip地址。
bc
bc是linux自带的运算器。
[rootlocalhost ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type warranty.
4*4
16
quit
输入quit就可以退出。 可以用bc进行小数运算
[rootlocalhost ~]# echo 4.64.6|bc
9.2
保留小数的运算scale表示精确到小数点后两位
[rootlocalhost ~]# echo scale2;56/5|bc
11.20
所以下面这一段代码的意义是使用bc工具算出使用率但是小数在bc中的0会被隐藏所以乘以100并且保留两位小数。
#计算使用率
percent$(echo scale2;$mem_used/$mem_all*100|bc)最后一段这里使用bc做比较判断是否超出我们定的阈值80超出就把它记录到日志中没有超出就提示监管者没有超出。这样就写了一个工作中可以使用的简易的内存监控脚本。
#定义一个警告的阈值然后进行比较
thereshold80
flag$(echo $percent $thereshold|bc)
if (( $flag 1 ));thenecho $cdate $ip_addr Total:{$mem_all}M Mem used:${percent}% $logfile
elseecho 内存的使用率在合理范围内
fi如果有问题欢迎评论区留言。