监视文件夹内容更改


18

我可以使用tail -f命令监视文件的内容更改

有没有一种类似tail -f监视文件的方法来监视目录结构的更改?

我有一个运行时间很长的过程,它将文件添加到目录下的某个路径中,并且我希望在文件(或它们)写入目录和子目录时跟踪文件输入。

Answers:


27

inotify内核系统是你所需要的。

  1. 安装inotify-tools

    sudo apt-get install inotify-tools
    
  2. 设置手表:

    inotifywait /path/to/directory --recursive --monitor
    
  3. 坐回去看输出。


来自man inotifywait

-m, --monitor
   Instead of exiting  after  receiving  a  single  event,  execute
   indefinitely.   The default behaviour is to exit after the first
   event occurs.
-r, --recursive
   Watch all subdirectories of any directories passed as arguments.
   Watches will be set up recursively to an unlimited depth.   Sym‐
   bolic  links  are  not  traversed.  Newly created subdirectories
   will also be watched.

您可以使用该--event选项来监视特定事件,例如创建,修改等。


1
万一任何人遇到此问题:观看失败。达到防毒
johan.i.zahri 2014年

1
在我的一台服务器上,我发现它不再称为“ inotify-wait正义” inotifywait。他们必须更改名称才能删除连字符。
Jamesking56

@ Jamesking56我删除了连字符。
muru

请注意,inotifywait的帮助说它期望在文件路径之前使用选项。
Felix Dombek

8

--events不是过滤器,则必须使用--event。例如,以下是用于监视创建/修改事件的命令行:

# inotifywait . --recursive --monitor --event CREATE --event MODIFY

然后我看到:

Setting up watches.  Beware: since -r was given, this may take a while!

这是提要的格式:

[path] [event] [file]

例如

./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.