实时监控日志Shell脚本,根据内容进行处理并调用不同脚本

在处理服务器日志时,我们经常需要实时监控日志文件,并根据日志中的特定模式执行相应的操作。本文介绍了如何使用 Shell 脚本来实现这一功能。

脚本概览

该脚本使用 tail 命令持续跟踪日志文件的新内容。当检测到包含特定模式的行时,脚本会提取相关信息,并调用一个指定的处理脚本。

#!/bin/bash

LOG_FILE="path/to/log.txt"
SCRIPT1="path/to/script1.sh"
SCRIPT2="path/to/script2.sh"
# 可以根据需要添加更多脚本路径

tail -F $LOG_FILE | while read LINE
do
    case "$LINE" in
        *pattern1*)
            # 对于 pattern1 的文本处理
            PROCESSED_TEXT=$(echo "$LINE" | awk '{print $2}') # 示例:提取第二个字段
            bash $SCRIPT1 "$PROCESSED_TEXT"
            ;;
        *pattern2*)
            # 对于 pattern2 的文本处理
            PROCESSED_TEXT=$(echo "$LINE" | cut -d' ' -f1) # 示例:提取第一个字段
            bash $SCRIPT2 "$PROCESSED_TEXT"
            ;;
        # 可以根据需要添加更多的模式匹配和脚本调用
    esac
done


在这个脚本中:

  • 我们使用 tail -F 实时监控日志文件。

  • case 语句根据不同的模式(如 pattern1, pattern2)调用不同的脚本。

  • 根据每个模式,我们使用不同的文本处理命令(例如 awk, cut)来提取或处理日志行的特

定部分。

  • 处理后的文本被传递给相应的脚本。

说明

  • LOG_FILE 变量指定了要监控的日志文件的路径。

  • SCRIPT1SCRIPT2 变量表示对应的处理脚本的路径。您可以根据需要添加更多的脚本。

  • case 语句中,我们根据日志行中的模式来决定调用哪个脚本。每个模式的处理逻辑可以自定义。

  • 文本处理命令(如 awk, cut)用于从日志行中提取所需信息。这些命令可以根据您的具体需求进行调整。

使用方法

  1. 将脚本保存为 .sh 文件,例如 log_monitor.sh

  2. 给予脚本执行权限:chmod +x log_monitor.sh

  3. 运行脚本:./log_monitor.sh

结论

这个脚本提供了一种灵活的方法来实时监控日志文件并根据其内容执行特定操作。这种方法特别适合于日志分析、实时监控和自动化处理等场景。


#!/bin/bash
LOG_FILE="/var/log/remote/gw1.log"
FILE2="/var/log/remote/gw_1.log"
FILE1="/var/log/remote/hj_1.log"
tail -F $LOG_FILE | while read LINE
do
    if echo "$LINE" | grep -q "GW#015$"; then
        echo "$LINE" >> $FILE2
    elif echo "$LINE" | grep -q "其他模式"; then
        echo "$LINE" >> $FILE1
    fi
    # 您可以根据需要添加更多的模式匹配和文件
done

if分支的形式


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。