我正在寻找一种方法来管理多个远程服务器上的多个日志文件,然后将结果传递给另一个程序。
现在我使用多头,但它并不完全符合我的需要,或者我做错了什么!
我希望能够将所有日志文件的合并发送到另一个程序。例如jq。现在,如果我这样做:
multitail --mergeall -l 'ssh server1 "tail -f /path/to/log"' -l 'ssh server2 "tail -f /path/to/log"' -l 'ssh server3 "tail -f /path/to/log"' | jq .
例如,我明白了:
parse error: Invalid numeric literal at line 1, column 2
但更一般地说,我想将此输出提供给我用来解析和显示日志的另一个程序: - )
谢谢大家!
答案 0 :(得分:1)
实现这一壮举的一种方法是将所有输出组合成一个named pipe,然后处理该命名管道的输出。
首先,创建命名管道:$ mknod MYFIFO p
对于要整合来自$ tail -f logfile > MYFIFO
的行的每个位置(注意,尾部-f可以通过ssh会话运行)。
然后让另一个进程从命名管道中取出数据并适当地处理它。一个丑陋的解决方案可能是:
$ tail -f MYFIFO | jq
品尝季节。