Continuando tailing e classificação de vários arquivos no linux?

1

Existe uma maneira de usar pipes ou FIFO em combinação para monitorar continuamente vários arquivos de log (mesmo formato) enquanto classifica no primeiro campo e então conseguir efetivamente fazer um tail -f naquela saída contínua e ordenada?

Eu posso fazer coisas como: -

mkfifo / tmp / logfile

cauda -F -q * .op > / tmp / logfile &

cauda -f < / tmp / logfile

mas eu tentei canalizar isso de alguma forma através do tipo -k 1, mas não consigo fazê-lo funcionar.

    
por Jon Scobie 27.06.2012 / 14:25

2 respostas

1

Por que isso não funcionaria?

tail -qf *.op | sort -k 1

Eu acho que multitail pode funcionar para você, a menos que os arquivos de log de que você fala sejam enormes. Algo como

multitail -R 5 -l "sort -k1 *.op"

executaria o comando sort -k1 *.op a cada cinco segundos e o colocaria bem na visualização de saída dos multitails. É claro que, se apenas X últimas linhas do log forem suficientes, então tail -n somenumber *.op | sort -k1 faria na parte do comando.

    
por 27.06.2012 / 14:29
0

O problema aqui é provavelmente que o tipo está aguardando o final do fluxo e não pode ser iniciado até que alcance o fluxo. Tipicamente, a classificação é usada em um conjunto finito de dados, portanto, ela aguarda tudo e depois ordena. Se não esperasse, teria que continuar recorrendo à medida que novos dados surgissem, o que não se encaixa na arquitetura de pipes unix.

Talvez o que você possa fazer seja usar tail -100l para pegar as últimas 100 linhas de cada log, classificar por time - e cortar quantas linhas você puder exibir, e então ordenar da maneira que você quiser. Em seguida, apenas faça um loop para atualizar regularmente.

    
por 27.06.2012 / 14:35