在LINUX中如何用脚本监控一个文件是否变化????

becloud 2010-09-19 09:55:08

如何用一个脚本监控一个文件是否有更新,如果该文件有变化,就立即把该文件当前的内容生成到另一个文件中

不能用工具,只能用脚本!

急用!!!!麻烦知道的大大留下解决方案,谢谢了!!
...全文
753 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
becloud 2010-09-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 guosha 的回复:]

生成到另一个文件是什么意思, 是每次生成一个完全不同的文件,还只是把文件同步到另一个文件?

如果每次都生成完全不同的文件,只能用inotify, 没有其它的选择.
如果只是同步到另一个文件, 或以考虑一些同步工具, 但这些同步工具,内部利用的其实也是inotify的机制
[/Quote]
对,只要有变化就生产一个新的文件
ayw215 2010-09-19
  • 打赏
  • 举报
回复
脚本貌似只能隔一段时间去比较看有无变化
用inotify吧
快乐田伯光 2010-09-19
  • 打赏
  • 举报
回复
生成到另一个文件是什么意思, 是每次生成一个完全不同的文件,还只是把文件同步到另一个文件?

如果每次都生成完全不同的文件,只能用inotify, 没有其它的选择.
如果只是同步到另一个文件, 或以考虑一些同步工具, 但这些同步工具,内部利用的其实也是inotify的机制
becloud 2010-09-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 steptodream 的回复:]

引用 6 楼 justkk 的回复:

Perl code
#!/bin/ksh

while true
do
diff yourfile newfile
if [ $? -ne 0 ]
then
cp yourfile newfile
fi

echo "ok"
sleep 1
done

干脆把sleep 1也去掉得了

但是我觉得用inotify做……
[/Quote]
小工具都需要动服务器吧,服务器不能乱动
becloud 2010-09-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 justkk 的回复:]

Perl code
#!/bin/ksh

while true
do
diff yourfile newfile
if [ $? -ne 0 ]
then
cp yourfile newfile
fi

echo "ok"
sleep 1
done
[/Quote]
谢谢,我试试
steptodream 2010-09-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 justkk 的回复:]

Perl code
#!/bin/ksh

while true
do
diff yourfile newfile
if [ $? -ne 0 ]
then
cp yourfile newfile
fi

echo "ok"
sleep 1
done
[/Quote]
干脆把sleep 1也去掉得了

但是我觉得用inotify做最好 你为什么不能用小工具呢
有个inotify-tools的小工具 很好用的
becloud 2010-09-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 steptodream 的回复:]

实时性需求高的话 就用inotify来实现
就监控一个文件 应该是不难的 下面是inotify的用法
http://www.ibm.com/developerworks/cn/linux/l-inotifynew/index.html

Inotify 可以监视的文件系统事件包括:

* IN_ACCESS,即文件被访问
* IN_MODIFY,文件被 write……
[/Quote]
谢谢你的关注,不过这好像要用到C语言是吧?然后还要编译,除了INOTIRY,就没别的办法了吗?
justkk 2010-09-19
  • 打赏
  • 举报
回复
#!/bin/ksh

while true
do
diff yourfile newfile
if [ $? -ne 0 ]
then
cp yourfile newfile
fi

echo "ok"
sleep 1
done
steptodream 2010-09-19
  • 打赏
  • 举报
回复
实时性需求高的话 就用inotify来实现
就监控一个文件 应该是不难的 下面是inotify的用法
http://www.ibm.com/developerworks/cn/linux/l-inotifynew/index.html

Inotify 可以监视的文件系统事件包括:

* IN_ACCESS,即文件被访问
* IN_MODIFY,文件被 write
* IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等
* IN_CLOSE_WRITE,可写文件被 close
* IN_CLOSE_NOWRITE,不可写文件被 close
* IN_OPEN,文件被 open
* IN_MOVED_FROM,文件被移走,如 mv
* IN_MOVED_TO,文件被移来,如 mv、cp
* IN_CREATE,创建新文件
* IN_DELETE,文件被删除,如 rm
* IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己
* IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己
* IN_UNMOUNT,宿主文件系统被 umount
* IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
* IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)
becloud 2010-09-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 steptodream 的回复:]

楼上的好快 然后把那脚本放到crontab里 每分钟执行一次

不过要是需要实时性比较强的话
就自己用c语言写个吧 用inotify!
[/Quote]
每分钟执行一次不行,我需要实时
becloud 2010-09-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 justkk 的回复:]

Python code
#!/bin/ksh

diff yourfile newfile
if [ $? -ne 0 ]
then
cp yourfile newfile
fi


初次执行时,先手工cp yourfile newfile保存一份副本。
[/Quote]
这个脚本能做到实时吗?我需要一有更新就会输出
steptodream 2010-09-19
  • 打赏
  • 举报
回复
楼上的好快 然后把那脚本放到crontab里 每分钟执行一次

不过要是需要实时性比较强的话
就自己用c语言写个吧 用inotify!
justkk 2010-09-19
  • 打赏
  • 举报
回复
#!/bin/ksh

diff yourfile newfile
if [ $? -ne 0 ]
then
cp yourfile newfile
fi

初次执行时,先手工cp yourfile newfile保存一份副本。

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧