程序异常监视脚本

这是应朋友要求帮助写的一个简单的程序异常监视脚本,主要通过分析日志文件中的异常信息关键词,检测到关键词则可以认为程序运行异常,重启线程。

脚本依赖linux下的crontab提供的定时器定时执行日志分析脚本。

为了帮助更轻松看懂脚本,这里简单讲解下几个高频的语句。

1、日志时间戳 TIMESTAMP

TIMESTAMP=`date +%Y%m%d\ %H:%M:%S`

这里调用shell的基本方法date,按照指定的格式输出时间信息

2、输出信息到日志文件

echo -n "${TIMESTAMP} 目标路径:${LOG_PATH} \n" >>${MONITOR_LOG_PATH}

echo是shell较为常用的用来输出信息到console(命令行)的方法,>>是用来将前面引号内的信息重定向输出到指定的日志文件,>>是以追加的方式写入日志文件,>是以覆盖的方式将信息写入文件,${xxx}是取变量名为MONITOR_LOG_PATH的变量值。

3、判断某个文件路径是否存在

if [ ! -d "${PREFIX_PATH}/log/" ]; then
		mkdir -p "${PREFIX_PATH}/log/"
fi

if条件语句中-d "${PREFIX_PATH}/log/"用来判断-d的参数路径是否存在,前面有!表示路径不存在的情况下执行相关的语句。

4、获取最新日期的日志文件

LATEST_LOG_FILE=`ls ${LOG_PATH}|sort -nr|head -1`

ls ${LOG_PATH}是显示指定路径下的所有文件,sort -nr是按照时间逆序即从新到旧的顺序排序,head -1是只显示按顺序的第一个记录。

部分示例语句:

# STEP1、Setup the initial environment parameter
PREFIX_PATH=$(cd "$(dirname "$0")"; pwd)
if [ ! -d "${PREFIX_PATH}/log/" ]; then
		mkdir -p "${PREFIX_PATH}/log/"
fi
MONITOR_LOG_PATH="${PREFIX_PATH}/log/event.log"
TIMESTAMP=`date +%Y%m%d\ %H:%M:%S`
echo -n "${TIMESTAMP} STEP 1 Setup the initial environment parameter \n" >>${MONITOR_LOG_PATH}
LOG_PATH="/home/alex/Desktop/test/"
EXCEPTION_KEYWORD="CreateRecord failed"
EXCEPTION_FLAG=false
TIMESTAMP=`date +%Y%m%d\ %H:%M:%S`
echo -n "${TIMESTAMP} >>>>>目标路径:${LOG_PATH} \n" >>${MONITOR_LOG_PATH}
TIMESTAMP=`date +%Y%m%d\ %H:%M:%S`
echo -n "${TIMESTAMP} >>>>>检索关键词:${EXCEPTION_KEYWORD} \n" >>${MONITOR_LOG_PATH}
echo  -n "\n"

这里附上脚本文件:logMonitor.sh

时间: 2024-10-15 12:13:31

程序异常监视脚本的相关文章

C程序与Lua脚本相互调用

Lua脚本是一种可用于C程序开发/测试的工具,本篇介绍一下C程序与Lua脚本如何进行相互调用,更加详细的操作参见<Programing in Lua>.本文分为3个部分:1.Windows环境下Lua的下载以及安装注意事项:2.Visual C++6.0中Lua的配置:3.C程序与Lua脚本相互调用实例. 1.Windows环境下Lua的下载以及安装注意事项 a.下载Lua for Windows,笔者用的版本是V5.1.4-35: b.上微软官网,下载Visual C++运行库——vcred

Linux C程序异常退出怎么办——core文件帮你忙

想必你一定遇到过Linux下程序异常退出的问题,异常退出貌似有一种神奇的魔力,会让你神经突然紧张.不要怕,Linux是很强大的,在程序退出的时候,会在可执行文件所在的目录生成一个core文件,它很好地记录了一些神秘而又必要的东西,帮助你定位到错误的根源,想想以前面试的时候人家闻到core文件,我答不上来,你说面试官会怎样想,那么就来说说core文件. core文件实际上就是一个内存映象同时加上一些调试信息. 首先,你得打开系统的core文件生成开关吧,终端中输入ulimit -c命令,若显示0表

qt程序异常结束crashed

今天调试以前写的opencv的程序发现每次一点运行就报错误 Starting D:\Qt\QProjects\build-HelloWorld-lian-Debug\debug\HelloWorld.exe...程序异常结束.D:\Qt\QProjects\build-HelloWorld-lian-Debug\debug\HelloWorld.exe crashed 但是直接从桌面运行编译出来的程序是可以的,然后郁闷了一晚上,最后突然想起来点运行的时候是不是qtcreator执行了某条命令..

无法添加来自此网站的应用、扩展程序和应用脚本 Proxy SwitchySharp

翻墙需要用到Proxy SwitchySharp 插件,但是本来就访问不了Google,如何给Chrome安装扩展程序,只好下载好Proxy SwitchSharp再安装,结果Chrome 添加插件时突然提示"无法添加来自此网站的应用.扩展程序和应用脚本",之前用Win直接就可以安装了,奇怪,原来是因为近日 Google 的 Chrome 浏览器宣布从最新Chrome版本开始默认只允许从 Chrome Web Store 下载安装扩展程序, 而众多未登陆 Web Store 的无论是扩

SpiderMonkey-让你的C++程序支持JavaScript脚本

译序 有些网友对为什么D2JSP能执行JavaScript脚本程序感到奇怪,因此我翻译了这篇文章,原文在这里.这篇教程手把手教你怎样利用SpiderMonkey创建一个能执行JavaScript脚本的C++程序,并让JavaScript脚本操纵你的C++程序的内部数据.操作.从这篇教程能够看到在SpiderMonkey引擎的帮助下,让C++程序支持JavaScript脚本是一件非常easy的事,更棒的是SpiderMonkey也能够在Macintosh和Unix平台使用.SpiderMonkey

SCOM 2012 R2应用程序事务监视无法加载Web Recorder插件

在配置SCOM 2012 R2的应用程序事务性监视的时候,发生在捕获网页的时候无法加载web recorder控件,经过检查IE的这个控件已经被我手动启用了,如图. 而且当前也是用管理员身份登录的,如图. 后来在网上找到了下面的解决方案. 这个方案是一个针对当前用户的一个修复的方案,为了避免原文的链接失效,现在把文章的内容附在下面,方便大家查看. =========================================================== Issue on record

java程序执行SQL脚本文件

首先引入ibatis-common-2.jar包 import com.ibatis.common.jdbc.ScriptRunner; import com.ibatis.common.resources.Resources; jpetstore测试代码如下: package com.ibatis.jpetstore.test; import java.sql.DriverManager; import java.util.Properties; import com.ibatis.commo

在程序异常中记录堆栈信息(使用ExWatcher)

在我们编写程序的时候可通过IDE自带的调试环境捕捉到异常(Except)错误,并能查看到相关的信息以便我们修正程序中的问题.但当软件被发布出去后,因为所部署运行的环境与我们的调试环境有很大区别,即使在是调试环境中测试过非常完美的程序,也很难保证在实际运行中不出现任何错误.当程序发生错误它往往是抛出一个红叉的警告框来告诉我们它出错了,但这对我们来说却像是一个不懂表达的小孩,只是一味的告诉你它身上疼,却不懂得告诉你它哪里疼.怎么样疼.幸好有一个叫ExWatcher的组件能够教会你的小孩怎么说出它身上

android捕获程序异常退出

今天看到迅雷动漫里面一个CrashHandler 的类,我猜是崩溃处理类.进去一看,果然.顺便学习一下. Android系统的"程序异常退出",给应用的用户体验造成不良影响.为了捕获应用运行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理.通过Thread.setDefaultUncaughtExceptionHandler()方法将异常处理类设置到线程上即可. 代码: public class CrashHandler implements Un