Tenho vários arquivos de log (relacionados ao meu servidor web, também conhecidos como vários error_log, access_log, etc.) que desejo monitorar em tempo real, ou seja, para ver atualizações recentes E preciso filtrar cada arquivo individualmente com string diferente ou sem qualquer filtragem.
Digamos que eu tenha um grupo de arquivos de log:file1.log
file2.log
file3.log
file4.log
file5.log
file1.log
file2.log
file3.log
Preciso filtrarstring
os três primeiros arquivos por alguma string que represente parte do caminho ou nome de usuário.
e os dois últimos arquivos file4.log
file5.log
que preciso ver sem nenhuma filtragem , ou seja, ver suas atualizações como estão.
Meu conhecimento é que posso usar tail -f file1.log file2.log file3.log | grep string
isso para obter a saída desejada de todos os três arquivos separados por ==> fileX <==
separadores. A mesma abordagem que uso para os dois últimos arquivos tail -f file4.log file5.log
. Isso me dá o que preciso, mas esses são comandos separados.
No entanto, não sei como posso combinar os dois comandos para ter uma saída ao vivo no meu terminal.
Tentei executar os dois comandos separados por ponto e vírgula ;
ou por &&
etc., mas não está funcionando conforme o esperado.
Minha pergunta é: como combinar vários tail -f
comandos em uma única saída usando vários filtros com o avanço do separador de arquivos tail -f ==> fileX <==
?
Pergunta de backup: existe alguma outra maneira de abordar resultados semelhantes de visualização ao vivo das alterações nos arquivos de log?
Acho que você está procurando algo tão simples como:
Eu testei isso lançando este script:
Como você pode ver, o script será impresso
fileN
seguido pela saída dedate
e, em seguida, a stringunwanted
em uma nova linha a cada 3 segundos em cada um dos 5 arquivos de log. Em seguida, executo o comando acima e obtenho esta saída: