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

检测磁盘和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
#####################
发布了114 篇原创文章 · 获赞 851 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Powerful_Fy/article/details/103374510