load和磁盘占用shell

本文深入解析了一个用于监控系统负载与磁盘利用率的UNIX Shell脚本,详细解释了如何通过top、df命令获取关键信息,并利用awk、sed等工具进行数据筛选与处理,最终通过if语句实现系统健康状态的判断与警告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/bash
load=`top -n 1 | sed -n '1p' | awk '{print $12}'`
load=${load%\,*}
disk_usage=`df -h | sed -n '2p' | awk '{print $(NF - 1)}'`
disk_usage=${disk_usage%\%*}
overhead=`expr $load \> 2.00`
if [ $overhead -eq 1 ];then
 echo "system load is overhead"
fi
if [ $disk_usage -gt 85 ];then
 echo "disk is nearly full,need more disk space"
fi

上面的脚本先通过top命令取得系统的load值,-n 1表示只刷新一次,然后使用sed过滤出第一行,也就是包含load信息的行。top命令会输出1分钟、5分钟、15分钟load的平均值,通过awk筛选出1分钟内的平均load,赋值給load变量,而${load%\,*}则是从右边开始,过滤掉不需要的逗号。接下来便是获取磁盘的利用率,通过df命令取得磁盘利用率信息, 用sed筛选包含磁盘总的利用率的第二行,通过awk命令筛选出包含磁盘利用率的倒数第二列,NF表示列的长度,NF -  1就是倒数第二列,也就是磁盘利用率列,再使用${disk_usage%\%*}过滤掉最后的百分号。由于取到的load信息包含两位小数,因此需要使用expr $load \> 2.00 命令进行比较,\是对>进行转义,这句的意思是是否大于2.00,大于得到1,小于得到0,并且将结果赋值給overhead.最后,通过if语句判断系统是否负载过高,或者磁盘利用率占85%以上,如果达到上述上限,则打印输出相关警告信息。

 

UNIX Shell 里面比较字符写法:

  • -eq   等于
  • -ne    不等于
  • -gt    大于
  • -lt    小于
  • -le    小于等于
  • -ge   大于等于
  • -z    空串
  • =     两个字符相等
  • !=    两个字符不等
  • -n    非空串

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值