磁盘报警

问题抛出:

当一台主机硬盘满了或者达到一定程度时候,报警,该怎么做?

A、怎么查看硬盘信息:



如果是监控一些文件的大小,如日志文件,要如何获取文件大小?知道的方法有如下两种:

1、ls -lh     2、du -sh *  

发现两个方法得出的文件大小并不完全一致,这是因为:du不是显示文件的大小,而是显示文件所占用的block大小,默认Linux系统分区的block size是4k,也就是说即使文件只有一个字节,也会占用4k。


那么系统块的大小是大点好,还是小点好呢?

如果将来在你的文件系统中是一些比较大的文件的话,使用较大的块大小将得到较好的性能。将ext2文件系统的块大小调整为4096byte而不是缺省的1024byte,可以减少文件碎片,加快fsck扫描的速度和文件删除以及读操作的速度;使用多大的块大小,需要根据你的系统综合考虑,如果系统用作邮件或者新闻服务器,使用较大的块大小,虽然性能有所提高,但会造成磁盘空间较大的浪费。比如文件系统中的文件平均大小为2145byte,如果使用4096byte的块大小,平均每一个文件就会浪费1951byte空间。如果使用1024byte的块大小,平均每一个文件会浪费927byte空间。在性能和磁盘的代价上如何平衡,要看具体应用的需要。


那么可不可以修改系统块大小?该如何修改?


B、当/dev/sda5的使用率超过90%时,发出报警:

初步思路:首先先截取到  /dev/sda5  那行,然后截取这一行的第五列获取到磁盘的使用率11%,为了方便比较,将11%以 ”%”为分隔符做列截取,可以截取到11,然后进行比较。

(为了显示效果,如果使用率超过10%就报警),简单的脚本如下:


上面的简单脚本,利用了grep、awk和cut这些字符截取命令。这对这些字符截取命令:


1、grep:行截取命令:可以截取含有关键字所在的那一行


2、cut:列截取命令:-f  列号    -d  分隔符

cut 命令的不足:不适合分隔符不标准


3、awk命令:

这里会发现第一行并没有按照分隔符“:”进行切分,这是由于awk执行的时候是将一整行读入,把这一整行赋予了$1,$3为空,此时再告诉它以“:”为分隔符时已经迟了,那怎样解决这个问题?首先要设个条件,在开始读取一整行时就告诉awk,以“:”为分隔符



C、现在又简单的脚本可以可以执行确认磁盘容量有没有报警,但是如果每次都要人去执行这个脚本,并不太现实,还缺少的一步,让系统自动去执行这个脚本,去检测磁盘容量是否报警。

这里想到了用Linux中的计划任务——crontab,简单的学习了一下crontab后,也遇到了一些问题,成功解决后,待继续学习后整理。

crontab -e:每分钟去执行一次脚本,并将结果输出的/tmp/log.txt下:


至此,大概实现了磁盘报警(除了日志监控)。

(未完待续)



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值