shell脚本:检测磁盘空间和inode使用率/新文件/网卡流量

10 阅读 作者:Asnfy 2020-04-22

检测磁盘和inode使用率

需求:
1.每天脚本检测所有分区的使用率和inode使用率
2.将磁盘空间和inode使用率记录到以当天日志命名的日志中
3.某个分区使用量或inode使用量大于90%时,发送邮件通知

查看磁盘分区使用情况:

[root@linux shell]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 480M     0  480M    0% /dev
tmpfs                    491M     0  491M    0% /dev/shm
tmpfs                    491M   20M  472M    5% /run
tmpfs                    491M     0  491M    0% /sys/fs/cgroup
/dev/mapper/centos-root   18G  8.0G  9.9G   45% /
tmpfs                    491M   52K  491M    1% /tmp
/dev/sda1                197M  141M   57M   72% /boot
tmpfs                     99M     0   99M    0% /run/user/0

查看inode使用情况:

[root@linux shell]# df -i
文件系统                  Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs                 122718     392  122326       1% /dev
tmpfs                    125685       1  125684       1% /dev/shm
tmpfs                    125685     715  124970       1% /run
tmpfs                    125685      16  125669       1% /sys/fs/cgroup
/dev/mapper/centos-root 9332736  123103 9209633       2% /
tmpfs                    125685      23  125662       1% /tmp
/dev/sda1                102400     333  102067       1% /boot
tmpfs                    125685       1  125684       1% /run/user/0

脚本思路:
判断df -h和df -i命令第5列的使用率数值实现

#/bin/bash
#定义日志存放目录
dir=/tmp/logs
d=`date +%F`

#如果目录不存在则创建目录
[ -d $dir ]||mkdir -p $dir
#记录磁盘分区使用信息到日志
df -h >> $dir/$d.log
#记录inode使用率到日志
df -i >> $dir/$d.log
#磁盘分区使用率大于90%时,记录到临时文件
df -h|sed '1d'|sed 's/%//g'|awk '$5>90 {print $6}'> $dir/df_h.tmp
#inode使用率大于90%时,记录到临时文件
df -i|sed '1d'|sed 's/%//g'|awk '$5>90 {print $6}'> $dir/df_i.tmp
#统计临时文件行数
n1=`wc -l $dir/df_h.tmp|awk '{print $1}'`
n2=`wc -l $dir/df_i.tmp|awk '{print $1}'`

c=0
if [ $n1 -gt 0 ]
then
    if [ $n2 -gt 0 ]
    then
	c=1
    else
	c=2
    fi
else
    if [ $n2 -gt 0 ]
    then
	c=3
    else
	c=4
    fi
fi

case $c in
    1)
	pyhton mail.py asnfy.qq.com "磁盘分区空间和inode使用率大于90%" "`cat $dir/$d.log`"
	;;
    2)
	python mail.py asnfy.qq.com "磁盘分区空间使用率大于90%" "`cat $dir/$d.log`"
	;;
    3)
	python mail.py asnfy.qq.com "inode使用率大于90%" "`cat $dir/$d.log`"
	;;
    *)
	;;
esac

检测新文件

需求:
目录/data/web/attachment存放用户上传到网站的文件,每5分钟检测一次是否有新文件,如果有,将新文件列表记录到一个按年、月、日、时、分命名的日志中

#!/bin/bash
dir=/data/web/attachment
t=`date +%F_%H%M`

find $dir/ -type f -mmin -5 > /tmp/update.list

n=`wc -l /tmp/update.list|awk '{print $1}'`

if [ $n -lt 0 ]
then
    mv /tmp/update.list /tmp/$t.log
fi

检测网卡流量

需求:
每分钟检测一次网卡流量(假设网卡名称为ens33),将结果记录到一个日志中,每个日志文件只记录当天的网卡流量信息,保留30天

脚本思路:
通过命令sar -n DEV 1 59取1分钟内的平均进出流量
日志名称以日_时.log命名,下个月会覆盖本月文件,实现保留30天

#!/bin/bash
dir=/tmp/sarlog
file=$dir/`date +%d_%H`.log
t=`date +%F_%T`

[ -d $dir ] || mkdir -p $dir

sar -n DEV 1 59|grep Average|grep ens33 > /tmp/sar.tmp

exec >> $file
echo $t
awk '{print "ens33 input: "$5"kB""\n""ens33 output: "$6"kB"}' /tmp/sar.tmp
echo "#####################"

执行结果:

[root@linux shell]# sh test.sh 
[root@linux shell]# cat /tmp/sarlog/05_20.log 
2019-12-05_20:34:19
ens33 input: 0.06kB
ens33 output: 0.07kB
#####################
2019-12-05_20:37:03
ens33 input: 0.00kB
ens33 output: 0.01kB
#####################
原文地址:https://blog.csdn.net/Powerful_Fy/article/details/103374510
热门教程
QT udpsocket如何绑定指定某个网卡的某个IP 0
QT利用InterfaceFlags获取禁用的网卡、没获取到IP的网卡、没插网线的网卡 0
C++获取当前正在使用的网卡的IP地址信息 0
linux系统文件属性inode与block知识9条总结 0
SHELL脚本企业级案例sshkey架构批量分发文件expect非交互式批量分发密钥 0
LINUX运维之shell自动化安装与自动化部署 0
LINUX系统之Shell脚本高级编程自动化运维实战 0
Linux脚本编程shell编程入门到实战教程 0
C++最新就业班第四期教程全集 0
利用Shell脚本生成全局唯一UUID 0
C语言生成全局唯一的UUID库 libuuid是一个用于生成UUID的C库 0
C++利用Boost库生成UUID boost::uuids::random_generator() 0
QT通过QUuid类实现了UUID的生成 0
Windows下提供了函数CoCreateGuid用于生成UUID 0
Java生成UUID的方法 0
QT判断文本编码的方法QTextCodec::codecForName 0
QT框架提供的强制类型转换方法qobject_cast qgraphicsitem_cast 0
怎么设置QToolBar按钮间距 0
QT利用QFileDialog实现对文件和目录的选择 0
QT获取用户对指定文件的权限,是否可读,可写这些 QT给指定文件重命名 0
相关文章
shell脚本:检测磁盘空间和inode使用率/新文件/网卡流量 16
shell 正则表达式 16
shell脚本部署mysql主从 16
centos7 shell脚本一键安装php环境全家桶 16
HDFS的shell命令操作-大萝卜博客 16
shell脚本:备份数据库、代码上线 16
shell 命令/程序 摘要记录 16
第一个shell脚本 16
shell脚本编程(一) 变量、条件判断、循环 16
Wifi网卡 16
shell语言declare用法 16
ngixn负载+keepalived高可用shell脚本 16
centos7系统shell一键keepalived高可用 16
磁盘空间不足导致的kubernetes 启动失败记录 16
初识shell 16
grep进行多文件搜索如何抑制文件名的输出 16
locate命令已经安装为何还是不能工作 16
CentOS 7 修改网卡设置 16
find命令查找文件时如何排除目录 16
使用find命令查找当前目录下的空文件 16