1

因此,在寻找一种方法来确定何时创建文件以开始复制时,我发现了 inotifywait,但它似乎对我不起作用。

我正在使用 Redline 转储远程计算机的内存,并拥有脚本以便它可以找到正确的目录和文件,但是当我尝试设置 inotifywait 时,它只是挂起并且永远不会返回该文件是完整的(我想知道文件是否被 Redline 保持打开直到它完成整个扫描,即使实际的内存映像已经完成?)

我试过了

inotifywait -m -e create fileName

inotifywait -m -e close_write fileName

但似乎两者都不起作用。他们说创建了手表,但是在不再写入文件后很长时间就挂在那里了。而且我不知道如何检查远程计算机是否仍然在文件上打开句柄... cp 当然仍然有效,并且 tail -f 清楚地表明该文件没有被写入。是否有一个优雅的解决方案来通知我的脚本文件准备好复制?

4

1 回答 1

0

你要求它永远不会退出:

   -m, --monitor
          Instead of exiting after receiving a single event, execute
          indefinitely.  The default behaviour is to exit after the
          first event occurs.

无限期地等待,尝试inotifywait -e close_write fileName

另一种方法是使用 实现繁忙循环--timeout / -t,但假设连续数据输入:

while inotifywait -e modify -t 15 fileName; do
    echo "something was written in the last 15 seconds"
done
echo "no activity for 15 seconds. done?"
于 2015-05-07T19:29:53.400 回答