检测磁盘和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
查看评论