ubuntu

ubuntu readdir如何实现文件监控

小樊
40
2025-09-04 06:10:50
栏目: 智能运维

在Ubuntu系统中,可以使用inotify工具来实现文件监控。inotify是Linux内核提供的一种文件系统事件监控机制,可以实时监控文件或目录的变化,如创建、删除、修改等。

以下是一个使用inotifywait命令行工具实现文件监控的示例:

  1. 首先,确保已经安装了inotify-tools包。如果没有安装,可以使用以下命令进行安装:
sudo apt-get update
sudo apt-get install inotify-tools
  1. 使用inotifywait命令监控指定目录。例如,要监控/home/user/test_directory目录,可以使用以下命令:
inotifywait -m -r -e create,delete,modify --format '%w%f %e' /home/user/test_directory

参数说明:

运行上述命令后,当/home/user/test_directory目录下发生创建、删除或修改事件时,inotifywait会实时输出相关信息。

如果你需要在自己的程序中实现文件监控,可以使用Linux内核提供的inotify API。以下是一个简单的Python示例,使用inotify库实现文件监控:

import os
import sys
from inotify_simple import INotify, flags

def main():
    path = "/home/user/test_directory"

    if not os.path.exists(path):
        print(f"Path {path} does not exist.")
        sys.exit(1)

    inotify = INotify()
    watch_flags = flags.CREATE | flags.DELETE | flags.MODIFY
    wd = inotify.add_watch(path, watch_flags)

    try:
        while True:
            for event in inotify.read():
                print(f"Event: {event.maskname} - {event.name}")
    except KeyboardInterrupt:
        inotify.rm_watch(wd)
        print("Monitoring stopped.")

if __name__ == "__main__":
    main()

在运行此脚本之前,请确保已经安装了inotify库。可以使用以下命令进行安装:

pip install inotify

运行脚本后,当/home/user/test_directory目录下发生创建、删除或修改事件时,脚本会实时输出相关信息。

0
看了该问题的人还看了