1 脚本运行前准备
需要用到“bc”软件来进行运算
yum -y install bc
2 创建一个脚本
vim /opt/.zhuzhu.sh
#!/bin/bash # author chenjiao #获取内存信息 MEMTOTAL=$(awk '/^MemTotal/ {print $2}' /proc/meminfo) MEMAV=$(awk '/^MemAvailable/ {print $2}' /proc/meminfo) MEMUSED=$(echo "$MEMTOTAL - $MEMAV" |bc) MEMINFO=$(echo "$MEMUSED * 100 / $MEMTOTAL"|bc) if [[ $MEMINFO -gt 70 ]];then echo "Memory usage is too high: $MEMINFO%" >> /tmp/info.txt fi #获取 / 磁盘信息 DISKTOTAL=$( df |grep -w "/"|awk '{print $2}') DISKUSED=$( df |grep -w "/"|awk '{print $3}') DISKINFO=$(echo "$DISKUSED * 100 / $DISKTOTAL" |bc) if [[ $DISKINFO -gt 80 ]];then echo "Disk usage is too high: $DISKINFO%" >> /tmp/info.txt fi if [[ -f /tmp/info.txt ]];then cat /tmp/info.txt |wall fi mv /tmp/{info.txt,.info.txt.`date +"%Y.%m.%d-%H:%M:%S"`}
MEMTOTAL 是为了查找到总内存大小,MEMAV这个变量是为了取出可用的内存大小。用总内存大小减去可用内存大小,即为已用的内存数。free这命令也能截取出来,但本人觉得这个更加简洁
我服务器就一块磁盘,所以我grep -w 精准匹配到“/” 下,来进行计算
这个脚本的阈值,可以根据实际需求来调整
可以给这个脚本一个执行权限
chmod +x /opt/.zhuzhu.sh
3 结合crontab来定时检查内存和磁盘使用情况
crontab -e
创建任务,如果是普通用户,请记得加-u 用户名
crotab执行命令的时间间隔,日期取决于实际需求,我设置为隐藏文件名,每五分钟执行一次
*/5 * * * * /bin/bash /opt/.zhuzhu.sh
截图一个内存超过70% 的公告来看看~
[root@k8s-master ~]# Broadcast message from root@k8s-master (Sun Aug
7 22:45:01 2022):
Memory usage is too high: 75%
然后使用这台服务器的其他用户都可以看到这个wall的警告内容了
完结,撒花~~