ubuntu

Ubuntu inotify如何检测文件删除

小樊
36
2025-06-17 12:56:55
栏目: 智能运维

在Ubuntu中,inotify是一个Linux内核子系统,它可以实时监控文件系统事件,如文件创建、修改和删除等。要使用inotify检测文件删除,你可以使用inotifywait命令或者编写一个使用inotify API的程序。

方法1:使用inotifywait命令

  1. 首先,确保你已经安装了inotify-tools包。如果没有,请运行以下命令安装:
sudo apt-get update
sudo apt-get install inotify-tools
  1. 使用inotifywait命令监控文件删除事件。以下是一个示例命令,它将监控当前目录下的文件删除事件:
inotifywait -m -e delete --format '%w%f' .

参数说明:

方法2:使用inotify API编写程序

你可以使用C语言或其他支持inotify API的编程语言编写一个程序来检测文件删除事件。以下是一个简单的C语言示例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/inotify.h>
#include <unistd.h>

#define EVENT_SIZE  ( sizeof (struct inotify_event) )
#define BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )

int main(int argc, char **argv)
{
    int length, i = 0;
    int fd;
    int wd;
    char buffer[BUF_LEN];

    fd = inotify_init();
    if (fd < 0) {
        perror("inotify_init");
    }

    wd = inotify_add_watch(fd, ".", IN_DELETE);

    length = read(fd, buffer, BUF_LEN);
    if (length < 0) {
        perror("read");
    }

    while (i < length) {
        struct inotify_event *event = (struct inotify_event *) &buffer[i];
        if (event->len) {
            if (event->mask & IN_DELETE) {
                printf("File deleted: %s\n", event->name);
            }
        }
        i += EVENT_SIZE + event->len;
    }

    (void) inotify_rm_watch(fd, wd);
    (void) close(fd);

    return 0;
}

编译并运行这个程序,它将监控当前目录下的文件删除事件,并在检测到文件删除时输出文件路径。

0
看了该问题的人还看了