Use less --follow-name
se sua versão de less
for compatível. Essa opção foi introduzida na versão 416.
Eu tenho um software que gira seus arquivos de log quando ele é reiniciado. No entanto, durante o desenvolvimento, estou reiniciando muito, portanto, gostaria de monitorar o arquivo de log mais recente a qualquer momento.
Se eu iniciar less
normalmente - less program.log
- e pressionar Shift-f
para finalizar, quando o arquivo de log for girado, continuarei monitorando o arquivo de log antigo. Eu suponho que isso é porque o número do inode permanece o mesmo e less
tem um identificador de arquivo aberto para esse inode.
É possível monitorar a atividade mais recente em qualquer arquivo de log chamado atualmente de program.log
?
Especificamente, estou trabalhando no Sun OS, portanto, uma solução que funcione lá seria ideal.
A less
option --follow-name
é apenas parte da solução;
Para substituir tail -F
, outro argumento é necessário:
less --follow-name +F file.log
A opção sozinha, como less --follow-name file.log
, na verdade, não começa a seguir as atualizações dos arquivos. Você precisa entrar no modo de seguir pressionando Shift F .
(Saia do modo para navegar por Control C .)
Em vez de seguir o arquivo, --follow-name
modifica o comportamento de menos.
Ele faz com que a tecla de comando Shift F dentro de less
siga com base no nome do arquivo, não no descritor de arquivo.
Além disso, não há opção normal para iniciar less
no modo de acompanhamento.
Mas você pode usar a linha de comando para dar pressionamentos de teclas para executar após a inicialização, prefixando-os com +
.
Combinando a opção de modificador com +F
, less
será realmente iniciado no modo de acompanhamento (modificado).
Use +F
sozinho para o equivalente a% normaltail -f
:
less +F file.log
Acabei de encontrar a resposta nesta lista de perguntas e respostas intitulada: Como fazer um tail -f
de arquivos de log rotacionados? .
tail
: (se instalar o GNU cauda no seu sistema é uma opção)
tail -F program.log
Na página de acompanhamento: :
-f, --follow[={name|descriptor}]
output appended data as the file grows; -f,
--follow, and --follow=descriptor are equivalent
-F same as --follow=name --retry
--retry keep trying to open a file even when it is or becomes
inaccessible; useful when following by name, i.e., with
--follow=name
A chave é a chave --retry
. Isso informa ao comando tail
para continuar tentando seguir um arquivo pelo nome. A opção -F
faz um -f
e um --retry
.
less
Como apontou @StephaneChazela nos comentários, o seguinte não funcionará.
tail -F program.log | less
A única outra opção que você tem é usar menos diretamente supondo que ele suporta a opção --follow-name
e less
o arquivo diretamente, renunciando usando tail
completamente.
less --follow-name program.log