实时监控日志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
#!/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分支的形式
发表评论