今日收获---inotify监控是否有新文件生成

1. 安装

yum -y install inotify-tools
# rpm -ivh inotify-tools-3.13-1.el6.rf.x86_64.rpm
# wget http://www.rpmfind.net/linux/mageia/distrib/7/x86_64/media/core/release/inotify-tools-3.20.1-1.mga7.x86_64.rpm

2. 命令

inotifywatch

  • -e: 监听指定的事件
  • -r: 监视一个目录下的所有子目录
  • -z: 输出表格的行和列,即使元素为空
  • -t: 超时时间
  • -fromfile: 从文件中读取需要监控的文件或排除的文件
inotifywatch -e access,modify -t 60 -r /linuxcool 

inotifywait

  • -m: 持续监听
  • -r: 使用递归形式监视目录
  • -q: 减少冗余信息,只打印出需要的信息
  • -e: 指定要监视的事件,多个时间使用逗号隔开
    • access: 访问,读取文件。
    • modify: 修改,文件内容被修改
    • attrib: 属性,文件元数据被修改。
    • move: 移动,对文件进行移动操作。
    • create: 创建,生成新文件
    • open: 打开,对文件进行打开操作
    • close: 关闭,对文件进行关闭操作。
    • delete: 删除,文件被删除。
  • –format: 监听到的文件变化的信息
    • %w: 表示发生事件的目录
    • %f: 表示发生事件的文件
    • %e: 表示发生的事件
    • %Xe: 事件以“X”分隔
    • %T: 使用由–timefmt定义的时间格式
inotifywait -mqr --format %f -e create

shell脚本

vi /script/watch_merc.sh 
#!/bin/bash

MON_DIR=/data/starpos/merc
inotifywait -mqr -e create,delete,modify $MON_DIR |\
while read files; do
  echo "$(date +'%F %T') $files" >> /script/log/watch_merc.log
done

报错处理

报错

# Failed to watch XXX upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via `/proc/sys/fs/inotify/max_user_watches’.

处理

cat /proc/sys/fs/inotify/max_user_watches # 默认值8192
echo 9999999 > /proc/sys/fs/inotify/max_user_watches
上一篇:JDBC学习


下一篇:解决"Visual Studio Code is unable to watch for file changes in this large workspace" (error