免费注册 查看新帖 |

Chinaunix

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

求助关于文件监控的shell [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-16 10:11 |只看该作者 |倒序浏览
大家好,希望大家帮帮忙
主要实现的功能就是用shell脚本判断一个文件大小是否改变
如果在一定时期内没有发生变化就执行某个命令(比如写入日志)
初步想法是通过查看文件大小
然后将这个值与日志中的值做比较
如果不相等
新查到的值替换原来日志中的值
如果相等,那么文件大小没有改变,写入日志

不知道大家是否有其他更好的方法

虽然我思路是上面的思路,但是很多命令不清楚
因为小弟初学shell,所以大家多帮忙
谢谢~~~~

论坛徽章:
0
2 [报告]
发表于 2006-05-16 11:28 |只看该作者
大家帮帮忙啦
现在很着急的~~~~~
小弟在这里先谢谢了

论坛徽章:
0
3 [报告]
发表于 2006-05-16 13:00 |只看该作者
55555555555555
为什么我问的问题没有人理啊?:(
大家帮帮忙,谢谢

论坛徽章:
0
4 [报告]
发表于 2006-05-16 13:24 |只看该作者
会员UID:84052
注册时间:2003-8-13 19:38
最后登录:2006-5-16 12:59
帖子总数: 3
精华帖子: 0
积分:14
二年半了,楼主潜水期不学习啊?


  1. file=$1
  2. filesize=`ls -l $file | awk '{ print $5}'`
  3. sleep 10
  4. filesize2=`ls -l $file | awk '{ print $5}'`
  5. if [ "$filesize" != "$filesize2" ]; then
  6. ...
  7. fi
复制代码

论坛徽章:
0
5 [报告]
发表于 2006-05-16 13:40 |只看该作者
谢谢楼上的朋友帮忙
我不是潜水不学习
我都忘记了曾经注册过了。。。
今天发贴求助注册时发现自己常用的ID被注册过了
然后用我的密码登陆居然进来了。。。汗。。。
现在还有一个问题就是我是通过一个软件定时调用SHELL脚本的。
所以担心如果在脚本里设置sleep的话会操作超时或者时间不对
如果是使用软件定时调用的话
脚本应该怎么改?
我的想法就是我发贴提出的那种。有没有更好的?
真的谢谢了
感激不尽~

论坛徽章:
0
6 [报告]
发表于 2006-05-16 14:07 |只看该作者

  1. ls -l yourfile | awk '{print $5}' > newvalue
  2. diff newvalue oldvalue > /dev/null 2>&1
  3. if [ $? -eq 1 ]
  4. then
  5. your action here
  6. cp newvalue oldvalue
  7. fi
复制代码

[ 本帖最后由 ha_ 于 2006-5-16 17:19 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2006-05-16 14:15 |只看该作者
谢谢帮忙:)
diff newvalue oldvalue 2>&1 > /dev/null
if [ $? -eq 1 ]
恩。。。我太菜了。这两句有些没看明白:(
这个语句是不是判断这两个值是否相等?
2>&1> /dev/null是什么意思?
$? -eq 1又是什么意思?
不知道能否说明一下?
还有
这个newvalue值是存放在文件中的么?
谢谢
如果方便的话可不可以短消息告诉我你的QQ或者MSN联系?

论坛徽章:
0
8 [报告]
发表于 2006-05-16 14:29 |只看该作者
原帖由 searun 于 2006-5-16 14:15 发表
谢谢帮忙:)
diff newvalue oldvalue 2>&1 > /dev/null
if [ $? -eq 1 ]
恩。。。我太菜了。这两句有些没看明白:(
这个语句是不是判断这两个值是否相等?
2>&1> /dev/null是什么意思 ...

LZ,你可以先去看看置顶的帖子!

论坛徽章:
0
9 [报告]
发表于 2006-05-16 15:17 |只看该作者
因为现在着急要实现这个功能
所以没办法啊:(
不然我也希望从基础慢慢打起的
diff newvalue oldvalue 2>&1 > /dev/null
这句是不是标准错误定向输出?
2>后面有没有;啊?
/dev/null 是输出的位置么?
if [ $? -eq 1 ]
这句是判断相等么?还是看不懂。。。菜啊:(

论坛徽章:
0
10 [报告]
发表于 2006-05-16 17:18 |只看该作者
/dev/null是空设备也叫bit dustbin.
改一下
diff newvalue oldvalue >/dev/null 2>&1意思是把命令的标准错误和标准输出重定向到空设备,即:禁止屏幕打印. >后面没有;
$?是上个命令的返回值
man diff
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP