Eu tenho um software que gira seus arquivos de log ao reiniciar. No entanto, durante o desenvolvimento, estou reiniciando muito, então gostaria de monitorar o arquivo de log mais recente a qualquer momento.
Se eu começar less
normalmente com less program.log
e pressionar Shift+ fna cauda, quando o arquivo de log for girado, continuarei monitorando o arquivo de log antigo. Suponho que isso ocorre 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 atualmente chamado program.log
?
Especificamente, estou trabalhando no Sun OS; portanto, uma solução que funcione lá seria o ideal.
tail -F program.log | less
vai funcionartail -f program.log
você já tentou isso?Respostas:
Use
less --follow-name
se sua versãoless
suportar. Essa opção foi introduzida na versão 416.fonte
A
less
opção--follow-name
é apenas parte da solução;Para substituir
tail -F
, outro argumento é necessário:A opção sozinha como
less --follow-name file.log
, na verdade, não começa a seguir as atualizações do arquivo. Você precisa entrar no modo de seguir pressionando ShiftF.(Saia do modo para navegar ControlC.)
Em vez de seguir o arquivo,
--follow-name
modifica o comportamento de less.Torna a chave de comando ShiftFdentro do
less
follow com base no nome do arquivo, não no descritor do 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 fornecer pressionamentos de teclas a serem executados após a inicialização, prefixando-os com
+
.Combinar a opção de modificador com
+F
,less
na verdade, iniciará no modo de acompanhamento (modificado).Use
+F
sozinho o equivalente a plaintail -f
:fonte
Acabei de encontrar a resposta nesta sessão de perguntas e respostas da U&L intitulada: Como fazer um
tail -f
arquivo de log rotacionado? .Usando
tail
:(se a instalação do GNU tail no seu sistema for uma opção)
Na página do manual da cauda :
A chave é a
--retry
chave. Isso informa aotail
comando para continuar tentando seguir um arquivo pelo nome. O-F
interruptor faz a-f
e a--retry
.Usando
less
Como o @StephaneChazela apontou nos comentários, o seguinte não funcionará.
A única outra opção que você tem é usar menos diretamente, assumindo que ele suporta o
--follow-name
switch eless
o arquivo diretamente, deixando de usartail
completamente.fonte
less
irá travar se você fizer "G" pr "F". Que você pode interromper fazendo "Ctrl-C", mas depois mata a cauda. Em seguida, você pode imitar o Ctrl-C, mas ainda não é muito utilizável.