尾部多个文件和grep输出

212*_*212 12 unix grep tail

我想从多个日志文件中获取一个模式,这些日志文件会被某些进程不断更新,并且会连续地延迟这个grep的输出.下面的命令不起作用,我得到

  • tail:警告:无限期地遵循标准输入是无效的
tail -f  | grep --line-buffered "Search this: " /var/links/proc2/id/myprocess*/Daily/myprocess*.log
Run Code Online (Sandbox Code Playgroud)

有人可以解决这个问题吗?

mu *_*u 無 11

你应该看看multitail工具(安装使用sudo apt-get install multitail)

简而言之,对于multitail,您需要使用该--mergeall标志在一个位置查看所有输出

multitail --mergeall /var/links/proc2/id/myprocess*/Daily/myprocess*.log  | grep --line-buffered "Search this: " 
Run Code Online (Sandbox Code Playgroud)

您可以在不使用grep的情况下执行相同操作

multitail -E "Search this: " --mergeall /var/links/proc2/id/myprocess*/Daily/myprocess*.log  
Run Code Online (Sandbox Code Playgroud)

要使用multitail单独查看输出,这也将提供文件名.

multitail -E "Search this: " /var/links/proc2/id/myprocess*/Daily/myprocess*.log 
Run Code Online (Sandbox Code Playgroud)

  • 您使用的是什么版本的多指令?我无法使用Debian打包的版本grep multiitail的输出:_multitail 5.2.13_ (3认同)

Udy*_*Udy 7

错误是您将文​​件提供给grep命令而不是尾部.

tail -f需要将文件作为输入.尝试:

tail -f  /var/links/proc2/id/myprocess*/Daily/myprocess*.log | grep --line-buffered "Search this: "
Run Code Online (Sandbox Code Playgroud)

获取文件名(但它不会像grep输出那样):

tail /var/links/proc2/id/myprocess*/Daily/myprocess*.log | grep --line-buffered -e'^==> .* <==$' -e'Search this: '
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.这部分工作,但我没有找到模式的文件名? (2认同)