在 tail -f 输出之前清除终端窗口

在 tail -f 输出之前清除终端窗口

我使用 cron 每 3 分钟运行以下脚本:

#!/bin/bash
cd ~/Documents/Fetch/
wget remotehost/data.txt --output-document=tmp
cp tmp data.txt
rm tmp

获取自生成的 php 日志。

我想检查文件是否有任何更改(时间跨度为 3 分钟)。所以在我的第二个屏幕上的终端中,我正在运行tail -f ~/Documents/Fetch/

现在,如果没有对 data.txt 文件进行任何更改,tail 只会一遍又一遍地输出相同的日志,并以tail: /home/midas/Documents/Fetch/data.txt: file truncated.

当文件被截断时,有没有办法告诉在显示输出之前tail完全显示终端屏幕?clear

我基本上希望这种情况发生:

  1. tail 打印初始内容
  2. tail 注意到文件被截断 >clear
  3. tail 打印文件截断后看到的内容。

man tail页面似乎没有给我这个选项。

有人对此有经验吗?

我知道它有点超出了 tail 本身的目的,但我可以想象在一些情况下这会很方便。

答案1

如果您的内容相对较短(无论终端中有多少行,都不到一个终端屏幕的大小),那么您可以tail重复运行

watch -n 30 'tail /path/to/filename 2>&1'

每 30 秒运行一次tail。您可能想要使用不同的间隔(默认值为 2 秒,但由于生成粒度为 3 分钟,因此将其设置得那么低没有多大意义)。

对于细微的变化,该-d标志也可用于突出显示差异。

相关内容