写一个监控内存的shell脚本
时间: 2023-09-12 15:05:44 浏览: 156
### 回答1:
脚本如下:
#!/bin/bash# 获取当前内存使用量
mem_usage=`free -m | awk 'NR==2{printf "%.2f%%\t\t", $3*100/$2 }'`# 获取系统当前时间
current_time=`date +"%Y-%m-%d %H:%M:%S"`# 输出当前内存使用量以及时间
echo "$current_time $mem_usage" >> /var/log/mem.log
### 回答2:
下面是一个简单的监控内存的shell脚本示例:
```
#!/bin/bash
# 获取当前内存使用情况
memory_usage=$(free | awk 'NR==2{printf "%.2f%%", $3*100/$2 }')
# 获取系统中可用的内存容量
available_memory=$(free -h | awk 'NR==2{print $7}')
# 获取当前时间
current_time=$(date +"%Y-%m-%d %H:%M:%S")
# 输出内存使用情况和可用容量到日志文件
echo "$current_time 内存使用率:$memory_usage 可用内存:$available_memory" >> memory.log
```
该脚本使用`free`命令获取内存使用情况,并使用`awk`命令解析输出结果。然后,它使用`date`命令获取当前时间,并将此信息与内存使用率和可用内存一起记录到名为"memory.log"的日志文件中。
你可以使用`crontab`将此脚本定期执行,以便实时监控内存使用情况。
### 回答3:
监控内存的shell脚本可以使用一下的脚本实现:
```bash
#!/bin/bash
while true; do
# 获取当前的内存使用情况
mem_total=$(grep MemTotal /proc/meminfo | awk '{print $2}')
mem_free=$(grep MemFree /proc/meminfo | awk '{print $2}')
mem_used=$((mem_total - mem_free))
# 输出当前的内存使用情况
echo "总内存:$((mem_total / 1024)) MB"
echo "已使用内存:$((mem_used / 1024)) MB"
echo "空闲内存:$((mem_free / 1024)) MB"
echo "内存使用率:$(((mem_used * 100) / mem_total))%"
# 设置内存使用阈值
threshold=$((mem_total * 80 / 100))
# 判断内存使用率是否超过阈值,如果超过则发送警告信息
if [[ mem_used -ge threshold ]]; then
echo "内存使用超过阈值!"
# 在此处添加发送警告信息的代码,例如发送邮件或者通知到远程服务器
fi
# 设置监控频率,单位为秒
sleep 5
done
```
以上脚本会以5秒为间隔循环监控当前的内存使用情况,当内存使用率超过80%时会输出警告信息。你可以根据需要修改脚本中的发送警告信息的部分,例如添加发送邮件或者通知到远程服务器的代码。
阅读全文