如何监视文件并在终端中打印出更改(使用 inotify)?

Posted

技术标签:

【中文标题】如何监视文件并在终端中打印出更改(使用 inotify)?【英文标题】:How can I monitor a file and print out changes in the terminal (using inotify)? 【发布时间】:2019-09-05 13:33:27 【问题描述】:

我想运行一个脚本,将文件的更改传输到另一个文件(如日志文件)并在终端中打印出来。 我更喜欢使用 inotify 工具,但也欢迎其他建议 :)

我尝试使用带有 -m 前缀的 inotifywait,但它之后的命令没有运行,因为 inotifywait -m 不断重复自身。 使用不带前缀的 inotifywait 也无济于事。

...
inotifywait -m $file >> logfile.log 
...

【问题讨论】:

【参考方案1】:

您可以尝试使用tee 过滤器,它会从inotfywait 读取输入并输出到终端和文件。

inotifywait -m file | tee -a logfile.log

要在后台运行此命令,请参见下文,但您将在此命令运行时将inotifywait 输出到终端。

nohup inotifywait -m file | tee -a logfile.log &

【讨论】:

谢谢,它有效! :) 但是是否可以在后台运行命令(例如,作为 while 循环)并执行其他命令?因为现在,在我执行你的命令行之后,我无法继续我的脚本。 ://

以上是关于如何监视文件并在终端中打印出更改(使用 inotify)?的主要内容,如果未能解决你的问题,请参考以下文章

如何比较两个目录并在python中输出更改的文件

如何在Windows中更改Git终端的标题?

如何使用 bash 监视目录中新创建的文件?

如何修复 react-scripts 启动时的“错误监视文件以进行更改:ECONNRESET”错误?

sh watch是一个linux bash脚本,用于递归监视文件修改并在发生更改时执行bash命令

sh react是一个linux bash脚本,用于递归监视文件修改并在发生更改时执行bash命令