如何在bash中扫描日志文件以查找错误
我想扫描日志文件以查找JDBC和JMS异常,如果发现此类错误,则发送电子邮件 这里关于tail的问题是:如何在bash中扫描日志文件以查找错误,bash,Bash,我想扫描日志文件以查找JDBC和JMS异常,如果发现此类错误,则发送电子邮件 这里关于tail的问题是: 我不能定期执行shell脚本 如果有人杀死从我的shell脚本调用的tail命令,那么我将不再收到电子邮件警报 到目前为止,我已经开发了以下脚本: #!/bin/bash #This shell script monitors application logs file and sends alert email in case of JDBC or JMS error. export L
#!/bin/bash
#This shell script monitors application logs file and sends alert email in case of JDBC or JMS error.
export LOGFILE=/usr/app/$USER/data/logs/dummyapp.log
export EMAILRECIPIENTLIST="opsteamdl@company.com"
#-------------------------------------------------------------------------
#----------- DO NOT EDIT AFTER THIS LINE ---------------------------------
#-------------------------------------------------------------------------
echo "Scanning log file - $LOGFILE"
tail -f $LOGFILE|while read line;
do
echo $line
if [ `echo $line|grep JDBCConnectionException|wc -l` -ne 0 ]; then
mailx -s "[URGENT] - JDBCConnectionException reported in log" $EMAILRECIPIENTLIST < echo $line;
else if [ `echo $line|grep javax.jms.JMSException|wc -l` -ne 0 ]; then
mailx -s "[URGENT] - javax.jms.JMSException reported in log" $EMAILRECIPIENTLIST < echo $line;
fi
fi
done
exit
#/bin/bash
#此shell脚本监视应用程序日志文件,并在出现JDBC或JMS错误时发送警报电子邮件。
导出日志文件=/usr/app/$USER/data/logs/dummyapp.log
导出EMAILRECIPIENTLIST=”opsteamdl@company.com"
#-------------------------------------------------------------------------
#-----------请勿在此行之后编辑---------------------------------
#-------------------------------------------------------------------------
echo“扫描日志文件-$LOGFILE”
tail-f$LOGFILE |在读取行时;
做
回音$线
if[`echo$line | grep jdbconnectionexception | wc-l`-ne 0];然后
mailx-s“[URGENT]-日志“$EMAILRECIPIENTLIST
您的脚本看起来不错,只是做了一些改进:
tail -f $LOGFILE|while read line;
do
echo "$line"
if $(echo $line|grep -Eq "JDBCConnectionException")
then
echo "$line" | mailx -s "[URGENT] - JDBCConnectionException reported in log" $EMAILRECIPIENTLIST && pkill -P $$ tail
elif $(echo $line|grep -Eq "javax.jms.JMSException")
then
echo "$line" | mailx -s "[URGENT] - javax.jms.JMSException reported in log" $EMAILRECIPIENTLIST && pkill -P $$ tail
fi
done
======================================================
pkill-p$$tail
:终止脚本启动的tail
命令。
如果您想让脚本运行,可以排除此部分。我不能定期执行shell脚本是什么意思,有
crontab
、watch
、at
等工具可以让您的命令按照您的要求运行!这将导致多个tail命令在后台运行,在审计期间很难证明这一点。