Você precisa redirecionar o stderr usando 2>>
(append). Esse é um problema com arquivos abertos sem o O_APPEND
flag e o copyrtrate do logrotate.
Estou usando o utilitário script para gravar sessões de terminal e usando logrotate (com copytruncate
, O script ignora o HUP e continua gravando no arquivo rotacionado caso contrário) para enviar periodicamente partes do que aconteceu até agora para outro servidor. Isso funciona muito bem para o conteúdo real da tela.
Hoje estou tentando também capturar informações de tempo, que o script emite para STDERR. Então, minha nova configuração de script parece
script -faqt session.record 2> session.timing
O problema é que quando eu uso logrotate nos dados de temporização (session.timing) o arquivo com backfilled começa com um grande número de bytes nulos na saída, o que faz com que a scriptreplay inicie quando lê o arquivo reconstruído de volta. / p>
Existe um problema conhecido (e esperamos que seja solução) usando o logrotate com a opção copytruncate no STDERR redirecionada para um arquivo?
Você precisa redirecionar o stderr usando 2>>
(append). Esse é um problema com arquivos abertos sem o O_APPEND
flag e o copyrtrate do logrotate.
Se eu não conseguir consertá-lo, posso contornar isso adicionando um script postrotado como:
postrotate
sed -i -e 's/\o00//g' session.timing.1
endscript
O qual removerá qualquer bytes NULOS (já que eles são ilegais em qualquer lugar nos arquivos de tempo de script) do primeiro arquivo girado.
Presumivelmente em um arquivo girado em que NULL às vezes é OK, você poderia alterar esse comando sed para remover apenas bytes NULL do início da linha zero no arquivo.