por que devemos usar create e copytruncate juntos?

40

O Geek Stuff tem um exemplo sobre logrotate. copytruncatecopiará e truncará o arquivo de log original.

Então por que devemos usar create? O arquivo de log original não foi removido.

/tmp/output.log {
  size 1k
  copytruncate
  create
  compress
  compresscmd /bin/bzip2
  compressext .bz2
  rotate 4
  maxage 100
}

Outra pergunta é para que serve maxage 100? A rotate 4diretiva excluirá os arquivos de log antigos após 4 rotações.

Majid Azimi
fonte
4
Sim, isso não faz sentido e man logrotateaté diz o seguinte: " copytruncate : [...] Quando essa opção é usada, a opção de criação não terá efeito, pois o antigo arquivo de log permanece no lugar."
Ulrich Schwarz
11
maxage 100excluirá os arquivos girados quando eles tiverem mais de 100 dias e o arquivo atual for girado; mesmo quando houver menos do que 4arquivos rotacionados.
Lutz Prechelt

Respostas:

57

Provavelmente é um erro, é encontrado apenas em um exemplo nesse tutorial. Todos os outros exemplos têm copytruncatesem a createopção Também a logrotate página de manual afirma que será realmente ignorado :

copytruncate

Trunque o arquivo de log original para o tamanho zero após criar uma cópia, em vez de mover o arquivo de log antigo e, opcionalmente, criar um novo. Ele pode ser usado quando algum programa não pode ser solicitado a fechar seu arquivo de log e, portanto, pode continuar gravando (anexando) no arquivo de log anterior para sempre. Observe que há um intervalo de tempo muito pequeno entre copiar o arquivo e truncá-lo, portanto, alguns dados de log podem ser perdidos. Quando essa opção é usada, a opção de criação não terá efeito, pois o arquivo de log antigo permanece no local.


Em relação a isso maxage, acho que pode ser útil, por exemplo, para arquivos de log que podem ficar vazios por alguns períodos de rotação (dias / semanas / meses) - se você usar notifempty, o arquivo de log vazio não será girado, para que você possa ter arquivos girados muito antigos ainda no lugar .

Marki555
fonte