我使用 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
我基本上希望这种情况发生:
- tail 打印初始内容
- tail 注意到文件被截断 >
clear
- tail 打印文件截断后看到的内容。
该man tail
页面似乎没有给我这个选项。
有人对此有经验吗?
我知道它有点超出了 tail 本身的目的,但我可以想象在一些情况下这会很方便。
答案1
如果您的内容相对较短(无论终端中有多少行,都不到一个终端屏幕的大小),那么您可以tail
重复运行
watch -n 30 'tail /path/to/filename 2>&1'
每 30 秒运行一次tail
。您可能想要使用不同的间隔(默认值为 2 秒,但由于生成粒度为 3 分钟,因此将其设置得那么低没有多大意义)。
对于细微的变化,该-d
标志也可用于突出显示差异。