一、任务

编写一个脚本 log_monitor.sh,用来监控 Nginx 的错误日志。

  1. 定义日志文件的路径(例如 /var/log/nginx/error.log)。

  2. 检查文件是否存在。

  3. 统计最近 100 行日志中,出现了多少次 "error"(忽略大小写)。

  4. 如果错误次数超过 5 次,输出报警信息。

二、创建文件

vim /root/log_monitor.sh

三、写入完成任务所需代码

#!/bin/bash

# 1. 定义变量
LOG_FILE="/var/log/nginx/error.log"
WARN_COUNT=5
echo "脚本运行时间:$(date '+%Y-%m-%d %H:%M:%S')"
# 2. 检查文件是否存在 (复习 -f 用法)
if [ ! -f "$LOG_FILE" ]; then
    echo "🚨 错误:日志文件 $LOG_FILE 不存在!请检查路径。"
    exit 1
fi

# 3. 统计最近 100 行中的 error 数量
# tail 取最后100行 -> grep 找 error -> wc -l 统计行数
ERROR_COUNT=$(tail -n 100 "$LOG_FILE" | grep -ic "error")

echo "🔍 最近 100 行日志中发现了 $ERROR_COUNT 个错误。"

# 4. 判断并报警
if [ "$ERROR_COUNT" -gt "$WARN_COUNT" ]; then
    echo "🚨 警告!错误数量超过阈值 ($WARN_COUNT),请立刻检查日志!"
    # 这里可以加上发送邮件的代码
else
    echo "✅ 系统日志正常。"
fi

四、赋予文件执行权限

chmod +x /root/log_monitor.sh

五、运行脚本文件

/root/log_monitor.sh