帮我写个监听LInux中RES/VIRT使用超过90%就发警告邮件及写个监听Log中10分钟内固定内容出现超10次也发邮件的监听sh脚本
时间: 2024-03-13 07:47:54 浏览: 129
Linux中的top, htop资源管理器命令中的VIRT列和RES列的区别
5星 · 资源好评率100%
好的,下面是一个监听 RES/VIRT 使用超过 90% 的脚本以及监听 Log 中固定内容出现超过 10 次的脚本。这两个脚本可以分别单独执行,也可以合并成一个脚本。
监听 RES/VIRT 使用超过 90% 的脚本:
```
#!/bin/bash
# 设置阈值
THRESHOLD=$((90*1024*1024)) # 90 MB
# 获取满足条件的进程
pids=$(ps -eo pid,rss,vsize,cmd --sort=-%mem | awk -v threshold=$THRESHOLD '$2>threshold {print $1}')
# 如果有满足条件的进程,发邮件告警
if [ -n "$pids" ]; then
echo "Memory usage of the following processes exceeds $((THRESHOLD/(1024*1024))) MB:" > /tmp/memory_usage.txt
ps -eo pid,rss,vsize,cmd --sort=-%mem | awk -v threshold=$THRESHOLD '$2>threshold {print $0}' >> /tmp/memory_usage.txt
mail -s "Memory usage alert" your_email_address@example.com < /tmp/memory_usage.txt
fi
```
监听 Log 中固定内容出现超过 10 次的脚本:
```
#!/bin/bash
# 设置阈值
THRESHOLD=10
# 统计 Log 中出现次数超过阈值的内容
content=$(tail -n 1000 /var/log/syslog | grep "固定内容" | sort | uniq -c | awk -v threshold=$THRESHOLD '$1>threshold {print $2": "$1}')
# 如果有满足条件的内容,发邮件告警
if [ -n "$content" ]; then
echo "The following content appears more than $THRESHOLD times in the last 10 minutes:" > /tmp/log_content.txt
echo "$content" >> /tmp/log_content.txt
mail -s "Log content alert" your_email_address@example.com < /tmp/log_content.txt
fi
```
请将 `your_email_address@example.com` 替换为您的邮箱地址,并将 `固定内容` 替换为您要监听的内容。注意,这两个脚本需要在 Linux 系统下运行,并且需要有邮件服务和权限访问 Log 文件。建议将脚本设置为定时任务,定时执行以保证实时监听。
阅读全文