温馨提示×

ubuntu inotify如何监控目录

小樊
38
2025-09-29 17:43:09
栏目: 智能运维

在Ubuntu系统中,inotify是一个用于监控文件系统事件的Linux内核子系统。你可以使用inotify-tools这个软件包来方便地监控目录。以下是如何安装和使用inotify-tools的步骤:

安装inotify-tools

  1. 打开终端。
  2. 运行以下命令来安装inotify-tools
sudo apt update
sudo apt install inotify-tools

使用inotifywait监控目录

inotifywaitinotify-tools中的一个命令行工具,用于监控文件系统事件。以下是一些常用的inotifywait命令示例:

监控单个目录

inotifywait -m /path/to/directory

这个命令会持续监控指定目录,并在检测到事件时输出相关信息。

监控多个目录

inotifywait -m -r /path/to/directory1 /path/to/directory2

这个命令会递归地监控指定目录及其子目录。

监控特定事件

你可以使用-e选项来指定要监控的事件类型。常见的事件类型包括:

  • create: 文件或目录被创建
  • delete: 文件或目录被删除
  • modify: 文件被修改
  • move: 文件或目录被移动
  • attrib: 文件属性被修改

例如,监控目录中的文件创建和删除事件:

inotifywait -m -r -e create,delete /path/to/directory

输出详细信息

你可以使用-v选项来启用详细输出模式,以便查看更多关于事件的详细信息:

inotifywait -m -r -e create,delete -v /path/to/directory

将输出重定向到文件

如果你希望将监控输出保存到文件中,可以使用重定向操作符:

inotifywait -m -r -e create,delete -v /path/to/directory > /path/to/output.log 2>&1 &

这个命令会将监控输出保存到/path/to/output.log文件中,并将标准错误输出重定向到标准输出。

示例脚本

以下是一个简单的示例脚本,用于监控目录并在检测到文件创建事件时发送通知:

#!/bin/bash

DIRECTORY="/path/to/directory"
LOGFILE="/path/to/logfile.log"

inotifywait -m -r -e create --format '%w%f %e' "$DIRECTORY" |
while read FILE EVENT; do
    echo "File $FILE was $EVENT at $(date)" >> "$LOGFILE"
    # 发送通知(例如使用notify-send)
    notify-send "File Created" "File $FILE was created at $(date)"
done

将上述脚本保存为monitor.sh,然后运行以下命令使其可执行并启动监控:

chmod +x monitor.sh
./monitor.sh

这样,每当有新文件被创建在指定目录中时,脚本会记录事件并将通知发送到桌面。

通过这些步骤,你可以轻松地在Ubuntu系统中使用inotify监控目录。

0