如何持续监视正在被覆盖的文件? 具体而言,该文件包含一行文本,后台进程将重复打开和重写。
我希望tail -F会工作,但事实并非如此。
更新 :我希望这不会是相关的,但我正在运行的Mac OS X 10.5.8。
你可以使用手表重复一个命令执行,所以你的情况
watch -n 1 cat filename
有更好的方法来做到这一点,但它会工作
while true ; do echo -n "`date +%s:` " >> file.log ; cat file >> file.log ; done
file.log文件将迅速增长…
如果您需要更多function,例如检查文件的内容是否与以前的内容相同,则可以将其扩展为脚本。 只是在下面评论,我会帮助。
在BSD系统(我相信大多数其他系统) tail -f将重置到文件的开头,如果它看到该文件已被截断(这听起来像你想要的行为)。
在Linux系统上,同样的事情发生了,但是至less在我放置在尾部的Debian框上有一个“轮询间隔”,所以你需要告诉它不要在文件检查之间hibernate( tail -s 0 -f ... ),因为它会注意到截断,否则会发生奇怪的事情(如果文件大小相同或更小,则不会得到输出,如果它更大,则在tail当前字节计数标记之后获得所有内容)玩你的尾巴障碍,看看它是如何performance的)
作为Linux和BSD系统的一个替代scheme,尾部有一个-F选项(它与-f类似,但检查文件是否已经旋转 – 即名称指向不同的inode编号)。 这不会帮助你,如果文件被截断,而不是取消链接和更换。
穷人的watch :
while true do clear cat file sleep 1 done
如果文件比屏幕更长,则更改cat :
tail -n $((LINES - 4)) file
您可以添加条件来检查文件时间戳等的更改。
您可以使用FSEvents API和一个小脚本来监视文件(或更准确地说是包含该文件的目录)。