又有shell编程问题,请教大家
一个程序,每发生一笔交易就在log文件里面产生一行交易记录,格式如下:2005-05-10 08:19:01||单位机密信息|客户机密信息|8|客户机密信息|单位机密信息|000||
大家看到了最后一列数字是000,这就是正常的,如果出现了111或者109这两个信号,那么就证明出问题啦。
现在我是tail -f log,这样,log文件的任何变化都在我的telnet上显示出来,但是每天发生万多笔交易,我不可能一直盯着屏幕啊,所以,怎样可以写一个脚本可以代替我盯着log文件,每当新的一行交易记录进入时检测这一行的最后一列是否包含111或者109,如果是,就beep的叫或者就屏幕闪,或者怎么样都可以,行不行?谢谢各位。
咦,怎么发在水园了,转到shell去。 有没有人啊…………vimchina在哪儿啊? zhyfly@zhyfly:~/bash$ cat log
2005-05-10 08:19:01||单位机密信息|客户机密信息|8|客户机密信息|单位机密信息|000||2005-05-10 08:19:01||单位机密信息|客户机密信息|8|客户机密信息|单位机密信息|109||zhyfly@zhyfly:~/bash$ cat log|awk -F"|" '{if($8!~/000/)print}'
2005-05-10 08:19:01||单位机密信息|客户机密信息|8|客户机密信息|单位机密信息|109||
zhyfly@zhyfly:~/bash$
用grep就可以了呀,这个简单~ :wink: 最简单的:
#!/usr/local/bin/bash
tail -1 logfile|grep "000">/dev/null
case $? in
0) echo ok ;;
1) echo wrong ;;
esac 呵呵,不错,修改一下:
#!/usr/local/bin/bash
tail -l logfile|grep "000">/dev/null
case $? in
0) . ;;
1) echo -e "\a" ;;
esac
出现beep声 :mrgreen: 呵呵,不错,修改一下:
#!/usr/local/bin/bash
grep "000" logfile>/dev/null
case $? in
0) . ;;
1) echo -e "\a" ;;
esac
出现beep声 :mrgreen:我又稍微修改了一下下,更合理一点点
#!/usr/local/bin/bash
tail -1 logfile|grep "000">/dev/null
case $? in
0) echo ok ;;
1) echo wrong ;;
esac
可以在退出状态为1(即出现问题的情况)的case语句里再加条件判断,更具体为111和109
atfa你自己整吧 诸位使用grep是不好的,因为用户信息里面有很多0000,呵呵,不过这个用awk和sed都简单,我能搞定。
这个脚本可以实时的监控?我感觉还是需要把它加到crontab里面才行啊,有没有办法让他不要退出一直执行呢? 那就是cron了
页:
[1]