Linux tail命令

tail-f多次grep过滤输出

tail -f log | grep xxx | grep yyy

发现grep失效,无法做正确输出,原因如下:
管道 | 是全缓冲的,一般来说buffer_size为4096,有些是8192。不管具体值多少,只有buffer_size满了,才会看到输出。

解决方法:

tail -f log | grep --line-buffer xxx | grep --line-buffer yyy

tail -f filename.log | grep --line-buffered -i xxx | grep --line-buffered -v yyy

解决tail -f inotify 资源耗尽问题

  • 查看 inotify 的配置

    sysctl fs.inotify

  • 修改 inotify 文件监听上限

    echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p (重载配置文件,使之马上生效)

参考资料:
tail -f 多次grep过滤输出