Linux 文件监控工具

文件监控脚本

inotifywait命令参数

-m是要持续监视变化,接收到一个事情而不退出,无限期地执行
-r使用递归形式监视目录
-q减少冗余信息,只打印出需要的信息
-e指定要监视的事件列表
-s输出错误信息到系统日志
-o输出事情到一个文件而不是标准输出
-d跟–monitor一样,除了是在后台运行,需要指定–outfile把事情输出到一个文件。也意味着使用了–syslog
–timefmt是指定时间的输出格式
–format指定文件变化的详细信息

modify 修改,文件内容被修改。
attrib 属性,文件元数据被修改。
move 移动,对文件进行移动操作。
create 创建,生成新文件
open 打开,对文件进行打开操作。
close 关闭,对文件进行关闭操作。
delete 删除,文件被删除。
access 文件读取

1
2
3
4
inotifywait -mrq --timefmt '%y %m %d %H %M --format '%T %w%f' -e create /home/test
inotifywait -mrq --format '%w%f' -e create /home/test/
# 统计
inotifywatch -v -e access -e modify -t 60 -r /home/test/

安装

方式一

方式二

yum install inotify-tools

使用

目录A移动到目录B

  1. vi inotify.sh 进入文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/sh
    # SRC=$1
    SRC=/home/test/
    TARGET=/home/test2/
    inotifywait -mrq --format '%w%f' -e create $SRC | while read line
    do
    mv "$line" $TARGET
    echo "mv $line $TARGET"
    done
  2. chmod +x inotify.sh 增加可执行权限
  3. ./inotify.sh 执行
  4. echo "/bin/sh /root/shell/inotify.sh &" >> /etc/rc.local 脚本加入开机自启动,& 代表从后台开始运行该条命令

参考