如何在内存转储完成后让inotifywait停止?

时间:2015-05-07 18:56:17

标签: bash inotifywait

因此,在寻找一种方法来找出创建文件以启动副本的时候,我找到了inotifywait,但它似乎并没有为我工作。

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

我已经尝试了

inotifywait -m -e create fileName

inotifywait -m -e close_write fileName

但似乎都没有奏效。他们说手表是创造出来的,但是在文件没有被写入之后很久就会挂在那里。而且我不知道如何检查远程机器是否仍然在文件上打开句柄... cp当然仍然有效,而tail -f清楚地表明该文件没有被写入。是否有一个优雅的解决方案来通知我的脚本文件准备复制?

1 个答案:

答案 0 :(得分: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?"