脚本功能
-
每隔一定时间(例如每分钟)检查系统中内存占用率最高的进程。
-
将进程的PID、名称和内存占用率记录到日志文件中。
-
可以设置一个阈值,当某个进程的内存占用率超过该阈值时,发送警告信息(可选)。
脚本代码
#!/bin/bash
# 配置参数
LOG_FILE="/var/log/memory_usage.log" # 日志文件路径
INTERVAL=60 # 检查间隔时间(秒)
THRESHOLD=80 # 内存占用率阈值(百分比)
# 检查并创建日志文件
if [ ! -f "$LOG_FILE" ]; then
touch "$LOG_FILE"
fi
# 检查内存占用率并记录
while true; do
# 获取内存占用率最高的进程信息
MEMORY_USAGE=$(ps -eo pid,comm,%mem --sort=-%mem | head -n 2 | tail -n 1)
PID=$(echo "$MEMORY_USAGE" | awk '{print $1}')
NAME=$(echo "$MEMORY_USAGE" | awk '{print $2}')
USAGE=$(echo "$MEMORY_USAGE" | awk '{print $3}')
# 记录到日志文件
echo "$(date +"%Y-%m-%d %H:%M:%S") - PID: $PID, Name: $NAME, Memory Usage: $USAGE%" >> "$LOG_FILE"
# 检查是否超过阈值
if (( $(echo "$USAGE > $THRESHOLD" | bc -l) )); then
echo "Warning: Process $NAME (PID: $PID) is using $USAGE% memory, which exceeds the threshold of $THRESHOLD%." | tee -a "$LOG_FILE"
# 可选:发送警告邮件或通知
# mail -s "Memory Usage Alert" your_email@example.com <<< "Process $NAME (PID: $PID) is using $USAGE% memory, which exceeds the threshold of $THRESHOLD%."
fi
# 等待指定时间
sleep "$INTERVAL"
done
脚本说明
-
日志文件:脚本将监控结果记录到指定的日志文件中。你可以通过查看日志文件来了解系统的内存使用情况。
-
检查间隔:
INTERVAL
变量控制脚本检查内存使用情况的时间间隔。默认设置为60秒。 -
阈值:
THRESHOLD
变量设置了一个内存占用率的阈值。当某个进程的内存占用率超过该阈值时,脚本会记录警告信息。你可以根据需要调整这个阈值。 -
警告通知:当内存占用率超过阈值时,脚本会记录警告信息到日志文件中。你可以选择通过邮件或其他方式发送通知。