Chinaunix

标题: 如何用一条语句截取文件的错误信息,并同时输出给另一个文件 [打印本页]

作者: shmtu2005    时间: 2014-07-22 15:54
标题: 如何用一条语句截取文件的错误信息,并同时输出给另一个文件
请教一下,我现在想对一个日志文件循环作监控信息,一旦出现报错信息:"文件提交失败",就会往另外一个alert.log里面添加信息"fail appears",这个怎么用简便的语句实现,比如用一句awk什么的

日志文件格式类似这种:
12345678gjghjghghj
sdfsdgdfgdfgdfgfgd
dfgdfgdfgdfgdfg
dfgdfgdfgdfdfgdfgfg
文件提交失败
sfsdfsdsdsdf
sdfsdfsdsdf
sdfsdfsdfsdf
sdfsdfsdfsdf
..................
作者: q1208c    时间: 2014-07-22 16:21
如果你用的 shell, 那其实 echo "failed appears" >> alter.log 就足够了.

如果你想连检测也一并做了, 那 grep 再加上 前面那句也够了.
作者: shmtu2005    时间: 2014-07-22 16:37
回复 2# q1208c


    grep的话一条语句做不到的
作者: Shell_HAT    时间: 2014-07-22 16:46
回复 2# q1208c


    楼主的问题重点是“循环作监控信息”,日志在不断的更新,直接grep会重复告警。
作者: shmtu2005    时间: 2014-07-22 16:51
回复 4# Shell_HAT
这个问题没事,重复报警的问题,我可以通过判断当天alert.log是否已经生成,生成的话我就不再往里面送fail appear,这样我可以保证当天不会重复的了,关键大师帮我弄一段怎么截取并送一段报错信息给alert.log


   
作者: shmtu2005    时间: 2014-07-22 16:52
回复 4# Shell_HAT
不用grep ,awk可以不,对awk语法不熟悉,能否推荐一个


   
作者: ivorning    时间: 2014-07-22 16:57
本帖最后由 ivorning 于 2014-07-22 17:02 编辑

回复 6# shmtu2005


    这个需求不用grep 去用awk有点舍近求远啊 个人感觉
   grep "XXXX" XX.log && echo "fail appears">alert.txt 应该可以吧
作者: yestreenstars    时间: 2014-07-22 17:05
目测一下:
  1. awk '/文件提交失败/{print "fail appears";exit}' your.log >> alert.log
复制代码

作者: q1208c    时间: 2014-07-22 17:24
回复 4# Shell_HAT


那只能配合 tail 了.     

记录下 每次tail时文件的长度. 下次从这个长度开始tail. 以避免重复报警.

再配合 grep , 再加上 echo.

只简单试了一下, 楼主试好了再用哈.
  1. #!/bin/bash

  2. PATTERN="ts"
  3. LOG=/tmp/file1

  4. FILESIZE=`ls -l ${LOG}|awk '{print $5}'`
  5. LASTSIZE=`cat ${LOG}.size 2>/dev/null`
  6. SIZE=`expr ${FILESIZE} - ${LASTSIZE:-0}`

  7. tail -c ${SIZE} ${LOG} | grep -q ${PATTERN}
  8. if [ $? -eq 0 ]; then
  9.     echo "`date` failed appears" >> alter.log
  10. fi

  11. echo ${FILESIZE} > ${LOG}.size

复制代码

作者: Shell_HAT    时间: 2014-07-22 17:27
回复 6# shmtu2005


    不用grep的原因是?
作者: shmtu2005    时间: 2014-07-22 23:02
回复 10# Shell_HAT


    我现在不是想把关键字的数据传到新文件alert.log,只是希望日志里匹配到关键字之后,在新文件输入一个固定值fail,大师这个用grep怎么实现啊
作者: Shell_HAT    时间: 2014-07-23 08:42
回复 11# shmtu2005


    哦,明白了,那就是类似7楼的写法。
作者: shmtu2005    时间: 2014-07-23 09:04
回复 9# q1208c
你连重复预警的问题都帮我想好了,辛苦辛苦!!!


   
作者: shmtu2005    时间: 2014-07-23 09:08
ivorning 发表于 2014-07-22 16:57
回复 6# shmtu2005

原来还可以这样写,学习了
作者: shmtu2005    时间: 2014-07-23 09:09
yestreenstars 发表于 2014-07-22 17:05
目测一下:

对,我就是想用这种写法,试过了没问题




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2