Linux下“减速”查看日志的方法

需求场景

今天查看日志,有个需求,需要按照指定“速率”输出日志信息到终端屏幕上,方便查看。

这个需求日常应该也经常会碰到,比如以下两种情况:

  • 场景1:需要快速浏览下日志中有没有异常信息,但是又不想刷新太快来不及看;
  • 场景2:需要实时查看日志信息(从日志尾部开始,监控更新后日志),但是刷新太快,看不清楚;

解决方案

相关中文资料没有找到,在StackExchange找到了一些参考的方法,比较有借鉴意义。

以下是整理的几种比较可行的one-liner方法,供参考。

另外,根据我的试验,0.2秒是一个比较舒服的慢速打印的刷新速率。

# 使用perl 每隔0.2秒打印一行
## 优点:Linux环境都有perl
## 缺点:大部分人不熟悉perl了,而且每次暂停都是调用系统sleep命令
场景1:perl -pe "system 'sleep .2'" log.txt
场景2:tail -f log.txt | perl -pe "system 'sleep .2'"

# 使用awk 每隔0.2秒打印一行
## 优点:Linux环境都有awk,也比较好记忆
## 缺点:每次暂停都是调用系统sleep命令
场景1:awk '{print $0; system("sleep 0.2")}' log.txt
场景2:tail -f log.txt | awk '{print $0; system("sleep 0.2")}'

# 使用ruby 每隔0.2秒打印一行
## 优点:使用ruby内置sleep函数;
## 缺点:Linux环境默认没有ruby
场景1:ruby -pe 'sleep 0.2' log.txt
场景2:tail -f log.txt | ruby -pe 'sleep 0.2'
12-21 23:16