我总是tail -F
在终端窗口中查看日志。日志中每个条目的开头都有一个 UTC 日期:
[08-Jan-2013 16:24:22] Yo!
当我浏览日志窗口时,我需要知道这些条目有多久了。我不想查看本地时钟并进行计算。所以我认为在窗口中显示实时时钟和输出会很酷tail
。
我想到的是后台循环并while
回车。写入日志条目时,覆盖时钟。echo
date
tail
while true; do echo -ne `date +"[%d-%b-%Y %H:%M:%S]"`"\r"; sleep 1; done &
log -F /path/to/log
这基本上是可行的,但我担心当输出tail
和date
同时产生输出时会发生什么。我不希望我的日志视图被回车符破坏。
我该如何将这些输出多路复用在一起,以免它们发生冲突?这是一份工作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 文件有用)等。
哦,状态行上还有一个时钟。