当前位置: 技术问答>linux和unix
请教linux下的shell的编写,文本内容没发生变化时告警
来源: 互联网 发布时间:2016-06-15
本文导语: 系统接收字符串,并存储在文本内, 想要实现:当文本不再接收到含有“local”标识的字符串时,pc喇叭报警。 初学者,刚刚开始学这个,研究了很久,写了下面的脚本,实在是怎么调试都通不过,也不知道怎么改,求助高...
系统接收字符串,并存储在文本内,
想要实现:当文本不再接收到含有“local”标识的字符串时,pc喇叭报警。
初学者,刚刚开始学这个,研究了很久,写了下面的脚本,实在是怎么调试都通不过,也不知道怎么改,求助高手帮忙指正一下,谢谢那!!!
#!/bin/sh
b="b"
d="d"
while ["$b"!="$d"]
do
cat * |grep local >a
tail -1 a>$b
sleep 60
cat * |grep local >c
tail -1 c>$d
done
echo -e '7'
(系统会不定期发出含有local的字符串,并生成文本,在旧文本达到一定大小后,生成新的文本继续存储这些字符串)
(我的想法是,初始化2个不同的字符串,系统检测到字符串不同时,检索当前目录下的所有包含local字符串的文本,并将包含字符串的最后一条文本存储到字符串b,每隔1分钟再做同样的检测,如果系统没有再次收到包含local字符串的信息时,退出循环告警。不知道想法可行不?)
此外,如何实现这个检测只在白天8点到12点之间运行啊??
多谢各位高手了!!!!
多谢啊!!
|
楼主如果要定时执行 就在/etc/crontab文件中追加在每天8点执行
01 08 * * * root shell程序路径 > /dev/null 2>&1
然后在12点把进程杀掉就行了。
楼主的代码while ["$b"!="$d"] 改成这样while [ "$b"!="$d" ] 就可以执行了
就是在[符号后加一个空格 在]符号前也加个空格就行了
我把杀进程的给你加上把
#!/bin/sh
b="b"
d="d"
while ["$b"!="$d"]
do
time=`date +"%H"`
if [ time -eq 12 ];then
kill -9 $$
fi
cat * |grep local >a
tail -1 a>$b
sleep 60
cat * |grep local >c
tail -1 c>$d
done
echo -e '7'
注意空格和符号
01 08 * * * root shell程序路径 > /dev/null 2>&1
然后在12点把进程杀掉就行了。
楼主的代码while ["$b"!="$d"] 改成这样while [ "$b"!="$d" ] 就可以执行了
就是在[符号后加一个空格 在]符号前也加个空格就行了
我把杀进程的给你加上把
#!/bin/sh
b="b"
d="d"
while ["$b"!="$d"]
do
time=`date +"%H"`
if [ time -eq 12 ];then
kill -9 $$
fi
cat * |grep local >a
tail -1 a>$b
sleep 60
cat * |grep local >c
tail -1 c>$d
done
echo -e '7'
注意空格和符号
|
检测 只在白天8点到12点之间运行,可以或许系统时间 进行判断嘛。其他的不能帮你,帮顶吧。
|
lz,脚本我就懒得去帮你改了,不过可以告诉你一些简单的办法。。。。
检测的话,可以用diff比较两个文件内容。。。
定期执行的话急用crontab
检测的话,可以用diff比较两个文件内容。。。
定期执行的话急用crontab
|
定时检测,把最新监测的一次保留一个副本,然后下次检测就跟副本比较就是了。