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