在远程 shell 中运行 inotify 并获取输出

在远程 shell 中运行 inotify 并获取输出

我的问题与这个非常相似:inotify 不够快

除非我在远程 shell 中运行 inotify。

我需要从机器B监控机器A上的文件变化。机器B可以通过ssh访问机器A,但是机器A不行。

while true; do
    FILEPATH=$(ssh -i key.pem A@machineA "inotifywait -m -e close_write $REMOTE_WATCH_DIR --format '%w%f'")
    echo $FILEPATH
done

在上面的代码中,$FILEPATH 始终为空。

如果我不放置,-m那么它将起作用,但仅适用于一个文件。正如本问题中提到的:inotify 不够快我也需要处理多个文件的更改。

关于如何使其工作有什么建议吗?我需要在远程 shell 中对多个文件触发 inotify,并返回在远程计算机中修改的文件列表。

答案1

弄清楚了:

while true; do
    echo "inotifywait -m -e close_write $REMOTE_WATCH_DIR --format '%w%f:%f'" | ssh -i key.pem A@machineA /bin/bash |
    while read file
    do
        process_data $file
    done
done

相关内容