监视目录列表以进行更改?

时间:2010-10-20 12:42:46

标签: linux shell directory monitoring

在unix系统上,我如何监视(就像'tail'的工作方式)目录对文件所做的更改 - 创建新文件或更改大小等等。

寻找命令行工具,而不是要安装的东西。

2 个答案:

答案 0 :(得分:5)

大多数unix变体都有一个API,但它没有标准化。在Linux上,有inotify。在命令行上,您可以使用inotifywait。用法示例:

inotifywait -m /path/to/dir | while read -r dir event name; do
  case $event in
    OPEN) echo "The file $name was created or opened (not necessarily for writing)";;
    WRITE) echo "The file $name was written to";;
    DELETE) echo "The file $name was deleted ";;
  esac
done

Inotify事件类型通常不是您想要注意的(例如OPEN非常宽),所以如果您最终进行自己的文件检查,请不要感觉不好。

答案 1 :(得分:1)

如果你不想安装工具,那么你可以制作自己的工具。只是一个想法。 使用find命令创建目录的基线文件。使用相同参数的循环或cron作业find目录,并根据基线文件检查新文件。使用像diff这样的工具来获取差异..

例如

find /path [other options] >> baseline.txt 
while true #or use a cron job
do
  find /path [same options] >> listing.txt
  diff baseline.txt listing.txt
  # do processing here...
  mv listing.txt baseline.txt  # update the baseline.
  sleep 60
done