Normalmente, um programa como cat
é finalizado quando a chamada do sistema read()
retorna primeiro 0 bytes de dados, tratando-a como EOF (fim do arquivo). Normalmente, o programa tail
faz o mesmo; sem a opção -f
, ele encontra o final do arquivo e lê para trás para encontrar as últimas 10 linhas (por padrão). ('Lê para trás' significa 'procura para trás e lê alguns dados'.)
Quando a opção -f
(follow) é usada, o comando tail
reconhece o retorno de 0 byte, mas não termina. Em vez disso, ele vai dormir por um curto período e, em seguida, tenta ler mais alguns dados. Se o arquivo for um arquivo de log que está crescendo como um processo (por exemplo, um servidor da Web ou um servidor de banco de dados) grava mais informações, então tail -f
mostrará as informações extras mais ou menos como aparecem.
Outro uso para isso é em compilações de longa duração. Você define a compilação em execução em segundo plano e grava sua saída em um arquivo de log. Em primeiro plano, você executa tail -f
no arquivo de log e, quando identifica um problema, é possível interromper o tail
sem quebrar a compilação.