打印
[应用相关]

Shell ——监控文件变化

[复制链接]
328|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
两只袜子|  楼主 | 2021-1-6 17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
文件监控可以配合rsync实现文件自动同步,例如监听某个目录,当文件变化时,使用rsync命令将变化的文件同步。(可用于代码自动发布)

实现文件自动同步,例如监听某个目录,当文件变化时,使用rsync命令将变化的文件同步。(可用于代码自动发布)。
inotify 是linux内核的一个特性,在内核 2.6.13 以上都可以使用。

如果在shell环境下,可以安装 yum install inotify-tools,安装以后有两个命令可以用inotifywait 和 inotifywatch,inotifywait 是需要使用的命令。

监听/usr/local/src 目录:
  • /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M'
  • --format '%T %w %f %e' -e modify,delete,create,attrib
  • /usr/local/src

[color=rgb(51, 102, 153) !important]复制代码


参数:
[td]
参数说明
-m持续监听
-r使用递归形式监视目录
-q减少冗余信息,只打印出需要的信息
-e指定要监视的事件,多个时间使用逗号隔开
--timefmt时间格式
--format监听到的文件变化的信息
--timefmt 说明:
ymd分别表示年月日,H表示小时,M表示分钟

--format 说明:
[td]
参数说明
%w表示发生事件的目录
%f表示发生事件的文件
%e表示发生的事件
%Xe事件以“X”分隔
%T使用由–timefmt定义的时间格式
执行上面的命令之后,在监听的目录下创建一个1.txt文件,得到如下结果:
执行上面的命令之后,在监听的目录下创建一个1.txt文件,得到如下结果:
  • 22/03/18 17:22 /usr/local/src/ 1.txt CREATE
  • 22/03/18 17:22 /usr/local/src/ 1.txt ATTRIB

[color=rgb(51, 102, 153) !important]复制代码



这个脚本的功能是循环监听文件或目录的增删改事件,当事件发生执行设置的脚本文件。
  •   #!/bin/sh
  •   # 监视的文件或目录
  •   filename=$1
  •   # 监视发现有增、删、改时执行的脚本
  •   script=$2
  •   inotifywait -mrq --format '%e' --event create,delete,modify  $filename | while read event
  •   do
  •       case $event in MODIFY|CREATE|DELETE) bash $script ;;
  •       esac
  •   done

[color=rgb(51, 102, 153) !important]复制代码



shell脚本后台执行:
一、nohup
使用nohup,其中test.sh为所执行的脚本,out.txt为输出信息的地方。
  • nohup sh test.sh>out.txt &

[color=rgb(51, 102, 153) !important]复制代码

[color=rgb(51, 102, 153) !important]


使用特权

评论回复
沙发
paotangsan| | 2021-2-2 23:20 | 只看该作者
不好意思的说 我还没有用过shell

使用特权

评论回复
板凳
renzheshengui| | 2021-2-2 23:24 | 只看该作者
需要自己编写脚本吗

使用特权

评论回复
地板
wakayi| | 2021-2-2 23:27 | 只看该作者
如何运行这些脚本呢

使用特权

评论回复
5
wowu| | 2021-2-2 23:33 | 只看该作者
我感觉我对这些都是门外汉

使用特权

评论回复
6
xiaoqizi| | 2021-2-2 23:36 | 只看该作者
都可以实现什么功能呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2038

主题

7366

帖子

10

粉丝