tail -f mas sugam primeiro o conteúdo do arquivo (aka `cat -f`)

9

Preciso exibir o arquivo inteiro antes de rastreá-lo para novas alterações, não apenas as últimas 10 linhas (sim, eu sei que não é um conceito conceitual). Em outras palavras, algo como cat -ffaria, se alguma vez existisse. O homem da cauda não me dá nenhuma idéia. A única opção que vejo agora é de alguma forma combinar cat, exceto as últimas 10 linhas, e a saída tail -f .

Alguma dica, por favor?

om-nom-nom
fonte
3
cat $f && tail -n0 -f $fvem à mente e verificar a página de manual em que parece tail -c0 -f $ftambém pode fazer o que você deseja (e é melhor porque não cria uma condição de corrida entre os dois processos em que os dados gravados podem ser ignorados). Eu não tenho acesso a um sistema Linux no momento, mas algum deles faz o que você deseja?
um CVn
Isso é útil e acabei de adicionar esse recurso a uma linguagem de programação: um "fluxo de cauda" que pode ler um arquivo normalmente do começo ao fim e depois entra no modo "cauda -f" no final, além de observar que o arquivo foi substituído por um mais curto ou truncado e siga-o. Você precisa fazer isso, como processar logs existentes (acompanhar uma lista de pendências) e começar a processar novas entradas.
Kaz

Respostas:

14

Aqui está uma maneira de fazer isso:

tail -f -n+0 /var/log/messages

Não parece haver nenhuma diferença entre a +0e a +1, portanto isso seria equivalente:

tail -f -n+1 /var/log/messages
slm
fonte
2
Parte relevante da página de manual (poupe algumas pessoas de digitar) ... -n, --lines = K produz as últimas K linhas, em vez das últimas 10; ou use -n + K para gerar linhas começando com o Kth
ouriço demente