我正在寻找可以执行以下操作的命令或 bash 脚本:
也就是说:我想要一个“超级合并”来将标准输入流与连续写入日志文件(此示例中为 var/log/messages)的内容合并。结果应写入标准输出。
原因是为了扫描某些错误消息,这些消息可以写入日志文件和标准输出。
例如:
my_strange_program /var/log/messages | supermerge /var/log/messages | my_log_scanner
- my_strange_program 可以将错误发送到标准输出和日志文件。
- supermerge - 我正在寻找的脚本
- my_log_scanner 一个扫描错误消息的程序(我已经有了这个)
笔记:日志文件可以轮换:messages、messages.1、messages.2 等等。因此不可能只对tail
文件进行重命名。
答案1
尝试这个:
my_strange_program /var/log/messages > /tmp/tmpfile | tail -F /var/log/messages /tmp/tmpfile | my_log_scanner
答案2
有一个名为 multitee 的工具。听起来像是你要找的东西。我试图弄清楚它是如何工作的,但没有结果。
另一个想法是使用多尾,如果它足以在屏幕上进行合并
multitail -f /var/log/syslog -L "ping 4.2.2.1"