你想做的事
跟踪和查看新创建的日志文件。无需创建功能等,就可以用单行实现它。
tail 命令的基本功能
使用 tail 命令继续显示日志文件
$ tail -f file.log
# 一旦file.logがリネームや消去をされて新たにfile.logが作成されても表示し続ける
$ tail -F file.log
已经足够了,但是当使用不同名称创建新文件时,仅使用 tail 命令来跟踪和显示是不可能完成的。
使用 tail 命令显示最新文件
在将日志附加到新的别名文件(例如 file1.log、file2.log ...)时显示最新文件
$ tail -f $(ls -tr file*.log | tail -n 1)
好的。但是$(ls -tr file*.log | tail -n 1)部分在你键入命令时只执行一次,所以即使之后创建了一个新文件,也不会被跟踪和显示。
- 参考:https://stackoverflow.com/questions/3416467/how-to-tail-f-the-latest-log-file-with-a-given-pattern
在某些情况下模式不佳
$ watch -n 60 -c "ls -tr file*.log | tail -n 1 | xargs tail"
如果是这样,它将每 60 秒监视一次,并在创建新文件时显示它。 watch 命令中的-c 是文本中的彩色显示。一般来说,你可以用这个来实现你想要做的,但是如果你在日志文件中显示一个带有tqdm等的进度条或者如果包含\rfor return,即使正常显示tail -f,这个方法显示坏了。
总是一个好的模式
$ while : ; do timeout 60 tail -f $(ls -tr file*.log | tail -n 1) ; done
由于watch命令中的tail命令在有return时无法正常显示,所以可以通过无限循环和超时相结合的方法来显示正常tail命令的结果。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308624603.html