centos

centos inotify如何实现日志记录

小樊
45
2025-08-16 23:41:37
栏目: 智能运维

在CentOS系统中,inotify是一个Linux内核子系统,它可以监控文件系统事件,如文件的创建、修改、删除等。要使用inotify实现日志记录,你可以使用inotifywait命令或者编写自己的程序来调用inotify相关的API。

以下是使用inotifywait命令实现日志记录的方法:

  1. 首先,确保你的系统中已经安装了inotify-tools包。如果没有安装,可以使用以下命令安装:
sudo yum install inotify-tools
  1. 创建一个脚本文件,例如inotify_log.sh,并添加以下内容:
#!/bin/bash

# 监控的目录
watch_dir="/path/to/your/directory"

# 日志文件路径
log_file="/path/to/your/logfile.log"

# 使用inotifywait监控目录,并将事件记录到日志文件中
inotifywait -m -r -e create,modify,delete --format '%w%f %e' "$watch_dir" >> "$log_file" 2>&1 &

/path/to/your/directory替换为你要监控的目录,将/path/to/your/logfile.log替换为你要存储日志的文件路径。

  1. 为脚本添加可执行权限:
chmod +x inotify_log.sh
  1. 运行脚本:
./inotify_log.sh

现在,每当监控目录中的文件发生变化时,相关信息都会被记录到指定的日志文件中。

如果你想编写自己的程序来实现日志记录,可以使用C、Python等编程语言调用inotify相关的API。以下是一个使用Python的示例:

首先,确保你的系统中已经安装了pyinotify库。如果没有安装,可以使用以下命令安装:

pip install pyinotify

然后,创建一个Python脚本文件,例如inotify_log.py,并添加以下内容:

import os
import pyinotify

# 监控的目录
watch_dir = "/path/to/your/directory"

# 日志文件路径
log_file = "/path/to/your/logfile.log"

class MyEventHandler(pyinotify.ProcessEvent):
    def process_IN_CREATE(self, event):
        self.log_event("CREATE", event.pathname)

    def process_IN_MODIFY(self, event):
        self.log_event("MODIFY", event.pathname)

    def process_IN_DELETE(self, event):
        self.log_event("DELETE", event.pathname)

    def log_event(self, event_type, file_path):
        with open(log_file, "a") as log:
            log.write(f"{event_type} - {file_path}\n")

# 设置inotify事件处理器
event_handler = MyEventHandler()
notifier = pyinotify.Notifier(pyinotify.WatchManager(), event_handler)
watch_mask = pyinotify.IN_CREATE | pyinotify.IN_MODIFY | pyinotify.IN_DELETE
notifier.add_watch(watch_dir, watch_mask, rec=True)

# 开始监控
notifier.loop()

/path/to/your/directory替换为你要监控的目录,将/path/to/your/logfile.log替换为你要存储日志的文件路径。

运行脚本:

python inotify_log.py

现在,每当监控目录中的文件发生变化时,相关信息都会被记录到指定的日志文件中。

0
看了该问题的人还看了