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 #####################
转载自:https://blog.csdn.net/Powerful_Fy/article/details/103374510