%20a%20tela%20de%20login.png)
Estou executando um servidor de e-mail ao qual me conecto usando SSH. My .bash_profile
está configurado para anexar uma sessão SSH a uma determinada screen
sessão.
Agora eu gostaria de ter um log (por exemplo, o syslog) impresso em uma janela desta sessão de tela. Eu tentei correr
tail -f /var/log/syslog
mas a saída para todos os dias às 6h25. Acho que é nesse momento que o log é girado. Então, existe uma maneira de imprimir o log na tela?
Responder1
Você precisatail --follow=name /var/log/syslog
A razão é que por padrão - supostamente por motivos de desempenho - tail
abre o arquivo especificado e então observao descritor de arquivoobtém desse open(2)
apelo por mudanças. Isso funciona bem enquanto o arquivo for alterado - anexado ou até mesmo reescrito (truncando-o primeiro), mas para de funcionar se o arquivo forsubstituído- isto é, removido e criado com o mesmo nome, e é isso que logrotate
normalmente acontece.
O modo "nome" --follow
faz tail
uso de um syscall mais caro stat(2)
que na verdade "resolve" o nome do arquivo a cada vez através da camada do sistema de arquivos, e se tail
perceber que o arquivo mudou seu chamado"inodo", tail
reabre o arquivo.
A saída de man tail
:
-f, --follow[={name|descriptor}]
produza dados anexados à medida que o arquivo cresce; um argumento de opção ausente significa 'descritor'
Você também pode consultar a -F
opção de linha de comando, que é definida como
-F
igual a--follow=name --retry
Responder2
Seu palpite está realmente correto. Neste momento, o syslog interrompe a gravação no log, faça um gz dele e reinicie o log dele.
Você poderia tentar com
tail -f --retry /var/log/syslog
Dessa forma, o tail deve tentar reabrir o arquivo quando a rotação do log for concluída