免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1756 | 回复: 6
打印 上一主题 下一主题

请教linux下的shell的编写,文本内容没发生变化时告警 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-01 11:46 |只看该作者 |倒序浏览
10可用积分
搞定啦
多谢各位高手了!!!!

多谢啊!!

[ 本帖最后由 fzugaojg 于 2009-7-5 10:22 编辑 ]

最佳答案

查看完整内容

再看了一下楼主的意图,如象是要检测有无新生成的local数据,不清除.#!sh#set -xc0=0while [ 1 ]do t=`date +%H` if [ "$t" -ge "8" -a "$t" -le "12" ] then c=`grep local * 2>/dev/null |wc -l` #如果是后台运行,最好指定查找绝对目录吧,如/tmp/tmp/*,将上句改为下一句。 #c=`grep local /tmp/tmp/* 2>/dev/null |wc -l` if [ "$c" -gt "$c0" ] then c0="$c" echo -e '\07\c' fi fi sleep 60 ...

论坛徽章:
0
2 [报告]
发表于 2009-07-01 11:46 |只看该作者
再看了一下楼主的意图,如象是要检测有无新生成的local数据,不清除.
#!sh
#set -x
c0=0
while [ 1 ]
do
  t=`date +%H`
  if [ "$t" -ge "8" -a "$t" -le "12" ]
  then
    c=`grep  local * 2>/dev/null |wc -l`
    #如果是后台运行,最好指定查找绝对目录吧,如/tmp/tmp/*,将上句改为下一句。
    #c=`grep  local /tmp/tmp/* 2>/dev/null |wc -l`
    if [ "$c" -gt "$c0" ]
    then
      c0="$c"
      echo -e '\07\c'
    fi
  fi
  sleep 60
done

论坛徽章:
0
3 [报告]
发表于 2009-07-01 15:25 |只看该作者

  1. [root@localhost shell]# cat test.sh
  2. #!/bin/bash

  3. while [ 1 ];
  4. do
  5.    time=$(date +"%H")
  6.    if [ $time -lt 8 -o $time -gt 12 ];then
  7.      break
  8.    fi

  9.    grep -q "local" txt && { echo "find";break; }
  10.    sleep 1
  11. done

复制代码

把echo那个换成你自己想要的
如果找到local也不想退出的话就  && echo "find"
sleep这里是1s  根据你自己需要改

论坛徽章:
0
4 [报告]
发表于 2009-07-01 21:18 |只看该作者
#!sh

#set -x
while [ 1 ]
do
  t=`date +%H`
  if [ "$t" -ge "8" -a "$t" -le "12" ]
  then
    grep -q "local" * 2>/dev/null
    #应该指定查找目录吧,如/tmp/tmp/*,将上句改为下一句。
    #grep -q "local" /tmp/tmp/* 2>/dev/null
    if [ "$?" -eq "0" ]
    then
      #应该在这里清除已检测过的文件,除非有别的程序自动清除。去除下一句的#注解
      #rm /tmp/tmp/*
      echo -e '\07\c'
    fi
  fi
  sleep 60

done

论坛徽章:
0
5 [报告]
发表于 2009-07-02 10:12 |只看该作者
在crontab 里每天上午8点运行下面的脚本

  1. #!/bin/bash

  2. logfile=/var/log/$file     #  这个$file是你当前的接受字符串的文件,既然系统自动生成的,那应该有规律,自己改一下就好
  3. while true
  4. do
  5.         t=($(date +%H) + 0 )
  6.         l=$(wc -l $logfile)            
  7.         if [ "$t" -lt 12 ];then     
  8.                 sleep 60
  9.                 tail -n +$l $logfile | grep local || exit 1
  10.         else exit        
  11.         fi
  12. done
复制代码

[ 本帖最后由 lucash 于 2009-7-2 10:20 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-07-02 15:47 |只看该作者

回复 #4 zhangshebao 的帖子

c=`grep  local /tmp/tmp/* 2>/dev/null |wc -l`
提示  bash:grep  local /tmp/tmp/* 2>/dev/null |wc -l   没有那个文件或目录????哪里出错了呢?

如果不加单引号的话,c的赋值就不成功,什么问题呢

论坛徽章:
0
7 [报告]
发表于 2009-07-03 00:51 |只看该作者
不是单引号,是~键上的符号,shift~
/tmp/tmp/*
是我举的例子,你的文件在哪个目录啊,改用你实际用的目录.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP