Assista (girando) na tela de login

0

Estou executando um servidor de email ao qual me conecto usando o SSH. Meu .bash_profile está configurado para associar uma sessão SSH a uma determinada screen sessão.

Agora, gostaria de ter um log (por exemplo, o syslog) impresso em uma janela dessa sessão de tela. Eu tentei correr

tail -f /var/log/syslog

mas a saída é interrompida todos os dias às 6:25. Eu acho que esse é o momento em que o log é rotacionado. Então, existe uma maneira de ter o log impresso para tela?

    
por tr01 01.02.2018 / 12:38

2 respostas

1

Você precisa de tail --follow=name /var/log/syslog

O motivo é que, por padrão, supostamente por motivo de desempenho, tail abre o arquivo especificado e, em seguida, observa o descritor de arquivo que ele obtém a partir dessa open(2) solicite alterações. Isso funciona bem enquanto o arquivo for alterado - anexado ou até mesmo reescrito (truncando-o primeiro), mas ele pára de funcionar se o arquivo for substituído - isto é, removido e criado com o mesmo nome, e é isso que o logrotate normalmente faz.

O modo "nome" de --follow faz com que tail use um stat(2) syscall mais caro que realmente "resolve" o nome do arquivo toda vez pela camada do sistema de arquivos, e se tail o alterar -chamado "inode" , tail reabre o arquivo.

A saída de man tail :

-f, --follow[={name|descriptor}]

output appended data as the file grows; an absent option argument means 'descriptor'

Você também pode ver a opção de linha de comando -F , que é definida como

-F same as --follow=name --retry

    
por 01.02.2018 / 15:03
0

Seu palpite está correto. Neste momento syslog interromper escrever no log, faça um gz dele e reinicie o log dele.

Você poderia tentar com

tail -f --retry /var/log/syslog

Desta forma, tail deve tentar novamente reabrir o arquivo quando a rotação de log tiver sido feita

    
por 01.02.2018 / 14:51