如何将实时时钟与 tail -F 结合起来

如何将实时时钟与 tail -F 结合起来

我总是tail -F在终端窗口中查看日志。日志中每个条目的开头都有一个 UTC 日期:

[08-Jan-2013 16:24:22] Yo!

当我浏览日志窗口时,我需要知道这些条目有多久了。我不想查看本地时钟并进行计算。所以我认为在窗口中显示实时时钟和输出会很酷tail

我想到的是后台循环并while回车。写入日志条目时,覆盖时钟。echodatetail

while true; do echo -ne `date +"[%d-%b-%Y %H:%M:%S]"`"\r"; sleep 1; done &
log -F /path/to/log

这基本上是可行的,但我担心当输出taildate同时产生输出时会发生什么。我不希望我的日志视图被回车符破坏。

我该如何将这些输出多路复用在一起,以免它们发生冲突?这是一份工作screen还是其他什么?

日志位于远程 Debian 服务器上。我的工作站运行 OSX。我通过 SSH 连接以运行上述脚本。

答案1

您可以使用 tail 的 -s 选项,这样 tail 就会休眠 5 秒钟:

-s, --sleep-interval=S
 with -f, sleep for approximately S seconds (default 1.0) between iterations.

tail -s 5 -f /var/log/messages

或者 watch 命令将显示日期:

watch --interval=5 tail  /var/log/messages

    Every 5.0s: tail /var/log/messages                 Tue Jan  8 17:52:41 2013

1 月 8 日 17:52:34 localhost 内核:新:IN=eth0 OUT=MAC=00:60:56:73:14:6b:00:50:5b:93:49:5d:08:00 SRC=10.0.0.2 DST=10.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=29070 DF PROTO=TCP SPT=50561 DPT=25 WINDOW=5840 RES=0x00 SYN URGP=0

使用 strace -t 命令的另一个(不是特别好的)解决方案:

 strace -t tail -f /var/log/messages

最后,你可以用 python/perl/ruby 编写自己的修改后的 tail 命令:

https://stackoverflow.com/questions/136168/get-last-n-lines-of-a-file-with-python-similar-to-tail

并将读取的日期/时间添加到输出行。

答案2

你可能想看看多尾;它支持带有单独或合并的日志文件的多个窗口、每个文件类型的基于正则表达式的颜色、自动换行选项、文件名监视(对 logrotated 文件有用)等。

哦,状态行上还有一个时钟。

相关内容