免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: deargentle
打印 上一主题 下一主题

请教各位大牛:获取日志信息的关键字,logger发送给messages文件,谢谢. [复制链接]

论坛徽章:
0
31 [报告]
发表于 2011-05-17 19:39 |只看该作者
本帖最后由 deargentle 于 2011-05-17 19:41 编辑

回复 29# ywlscpl


1. match.sh里    tail  去掉-f 可以写到mylog里,但有少了实时性。


2.执行完sendlog.sh
[root@localhost ~]# more /var/log/mylog.tmp
May 17 19:05:50 localhost oracle: Errors in file
May 17 19:05:50 localhost last message repeated 2 times
May 17 19:05:50 localhost oracle: ORA-00313: ??????? 1 (???? 1) ???
May 17 19:05:50 localhost last message repeated 4 times
May 17 19:05:50 localhost oracle: ORA-00314: ??????? 1 (???? 1) ???

[root@localhost ~]# more /var/log/mylog.ready 文件空的没有内容.

耽误两位朋友吃饭了,不请你们吃饭真是过意不去,哈哈

论坛徽章:
0
32 [报告]
发表于 2011-05-17 19:45 |只看该作者
本帖最后由 ywlscpl 于 2011-05-17 19:46 编辑

回复 31# deargentle


1、    你man tail 看看,有无跟-f 类似的选项,你的系统没-f选项比较奇怪啊
2、mylog.ready为空因为mylog.sended文件还没产生或为空,是我考虑不周
可把awk 'NR==FNR{a[$0]}NR>FNR&&!($0 in a)' mylog.sended mylog.tmp >mylog.ready
改成awk 'FILENAME=="mylog.sended"{a[$0]}FILENAME=="mylog.tmp"&&!($0 in a)' mylog.sended mylog.tmp >mylog.ready

论坛徽章:
0
33 [报告]
发表于 2011-05-17 19:58 |只看该作者
本帖最后由 deargentle 于 2011-05-18 10:33 编辑

回复 32# ywlscpl


奇怪了

1.系统的tail -f 这个功能确实是可以的
2. 日志产生了,但又没有实时性。

论坛徽章:
0
34 [报告]
发表于 2011-05-17 20:04 |只看该作者
回复 31# deargentle


    jl脚本调好了shishi

论坛徽章:
0
35 [报告]
发表于 2011-05-17 20:36 |只看该作者
回复 34# nuclearxin


    嗯,试过了,运行流畅。
    服务器会不定期的重启,看来运行之前我还的需要把alert.log日志定期清理一下,否则又从头读了。

谢谢

论坛徽章:
0
36 [报告]
发表于 2011-05-17 22:56 |只看该作者
本帖最后由 南极雨 于 2011-05-17 23:45 编辑

回复 1# deargentle
1、
#!/bin/bash
function error ()
{
awk 'FNR=NR{print}' $1 | sed -n -e '/ORA-/p;/error/p;/Error/p'
while :
do
TOTLINE=`wc -l $1 | awk '{print $1}'`
echo $TOTLINE
sleep 1800
NEWLINE=$(($(wc -l $1 | awk '{print $1}') - $TOTLINE - 1))
echo $NEWLINE
tail -$NEWLINE $1 | sed -n -e '/ORA-/p;/error/p;/Error/p'

done
}
logger -f error ............。

2、

#!/bin/bash
awk 'FNR=NR{print}' $1 | sed -n -e '/ORA-/p;/error/p;/Error/p'
while :
do
TOTLINE=$((`wc -l $1 | awk '{print $1}'` -1 ))
sleep 10
awk -v TOTLINE=`echo $TOTLINE` 'NR>TOTLINE{print}' $1 | sed -n -e '/ORA-/p;/error/p;/Error/p'
continue
done
注意:awk -v TOTLINE=`echo $TOTLINE` 'NR>TOTLINE{print}' $1 | 在打印的时候,如果这行有两个是匹配的则会多打印一行~!

论坛徽章:
0
37 [报告]
发表于 2011-05-20 15:18 |只看该作者
回复 17# ywlscpl

    由于最佳答案只能选一个,我再开个帖子给你送分了。谢了

     谢谢其他朋友。

论坛徽章:
0
38 [报告]
发表于 2011-05-20 15:22 |只看该作者

论坛徽章:
0
39 [报告]
发表于 2011-05-20 15:54 |只看该作者
解决问题就好了啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP