我有一个脚本来收集正在不断提供的文件的大小。我将其大小回显到日志文件(echo' filesize是$ size'> log.txt)所以我只有最后一个大小的信息。所以,只有一行。
现在,在另一个终端中,我想拖尾该日志文件以查看其实时增加的大小。事实证明,tail -f path / to / file为我提供了我想要的输出但是它一直跳到下一行(正如预期的那样,我猜)。
因此,输出类似于:
$ tail -F log.txt 2>/dev/null
filesize is 1.658 GB
filesize is 1.659 GB
filesize is 1.659 GB
filesize is 1.660 GB
我想要的东西更像是命令" less"你没有光标回来。也许一个更好的例子是" mtr",它不断更新屏幕上的信息而不用下一行(而不是traceroute)。
谢谢,
答案 0 :(得分:3)
您可以watch
命令每隔-d
秒监控文件更改/差异(n
)
watch -n 5 -d cat log.txt
答案 1 :(得分:3)
使用此命令。
watch tail -n 1 log.txt
答案 2 :(得分:2)
while [ 1 ]; do sleep 1; clear; tail log.txt; done
这没有将命令和参数传递给watch
的缺点(有时你需要跳出额外的循环来使它正确),并清除终端。
答案 3 :(得分:0)
接收文件实时信息的最有效解决方案是使用inotify
这是一个Linux内核功能,用于在特定文件更改时接收通知。您可以编写自己的使用该功能的c程序,也可以使用inotify-wait或inotify-watch命令构建脚本。你可能需要安装它。但两者都有很好的记录。 新版本的tail也使用这个Linux内核功能
编辑:请记住,这只会帮助您监控文件事件。当这样的事件发生时你所做的不是我的一杯茶。
PS。您是否认为写入文件MAYBE的进程仅在存在换行符时刷新其写入缓冲区