有人可以给我一些启发,指明正确的方向吗?
我想在 bash 中创建一个脚本,用于在 Tomcat 应用程序启动期间检查日志中的异常。此脚本应该能够通过 动态检测新文件的创建inotify
。
该脚本应不断检查日志目录中的日志文件中的新行,并将包含单词Exception:
或ERROR
的行写入/var/log/errorcheckernotifier.txt
。
当脚本检测到此行时,INFO: Server startup in
它应该写入TOMCAT IS STARTED
启动/var/log/errorcheckernotifier.txt
期间检测到的异常数量。
此脚本不应覆盖 中的内容errorcheckernotifier.txt
。而应将其附加。
我怎样才能保持这个脚本运行并检测进一步的启动、计数异常等。
答案1
如果有帮助的话,我可以给你我的 tomcat 初始化脚本的“启动”部分。
开始) echo -n“启动$FOO_BASE_JM” ## 使用 startproc(8) 启动守护进程。如果失败 ## 返回值由startproc适当设置。 如果 ps -efwwwwwwwwwwwwwwwwww | grep java | grep -q "$FOO_BASE_JM"; 然后 echo "进程$FOO_BASE_JM 已经存在" rc_failed 1 别的 LOGLINES=$(cat /opt/$FOO_BASE_JM/logs/catalina.out | wc -l) 导出 CATALINA_OPTS ########/sbin/startproc $FOO_BIN 如果 [ “$(id -un)” = “tomcat” ]; 然后 $FOO_BIN 开始 || rc_failed 1 别的 /bin/su tomcat $FOO_BIN 启动 || rc_failed 1 菲 echo -n“等待进程出现。” 重量=0 process_seen=true 当 !ps -efwwwwwwwwwwwwwwwwww | grep java | grep -q "$FOO_BASE_JM"; 执行 睡眠2 回显 -n。 重量=$(($重量+1)) 如果 [ “$wt” -gt 30 ]; 然后 回声 echo "超时:无法看到该过程。您应该检查日志。" rc_failed 1 process_seen=false 休息 菲 完毕 如果 [ “x$process_seen” = “xtrue” ]; 然后 回声 echo -n“等待启动。” 重量=0 while !tail +$LOGLINES /opt/$FOO_BASE_JM/logs/catalina.out | grep -q "INFO: 服务器启动"; 执行 睡眠2 回显 -n。 重量=$(($重量+1)) 如果 [ “$wt” -gt 30 ]; 然后 回声 echo "超时:在日志中找不到服务器启动成功的迹象。请检查。" rc_failed 1 休息 菲 完毕 tail +$LOGLINES /opt/$FOO_BASE_JM/logs/catalina.out | grep -q "INFO: 服务器启动" && tail +$LOGLINES /opt/$FO O_BASE_JM/logs/catalina.out | grep “INFO:服务器启动” 菲 fi # 如果不存在进程 # 记住状态并详细阐述 rc_status -v ;;
作为替代方案,我建议使用 Nagios 之类的监控工具,将其日志监控插件之一指向 catalina.out 文件(或您要登录的任何位置)并搜索新的错误字符串或任何您感兴趣的内容。在我们的 Oracle DB 上,这非常有效。