Existe um comando como “tee” que limita o tamanho do arquivo e trata o arquivo de saída como uma fila de tamanho fixo?

2

Existe um comando onde alguém pode fazer algo como:

someprogram | tee --limit=1MB afile

Por que "afile" conteria o mais recente 1 MB de saída de "someprogram"?

    
por okhobb 27.01.2017 / 18:13

2 respostas

1

Exatamente isso, provavelmente não. Uma vez que tenha aquecido e preenchido o arquivo, ele estaria reescrevendo 1MiB- N bytes de dados antigos, para embaralhá-los ao longo do arquivo, para cada N bytes de novos dados que é adicionado ao final do buffer. Este não é exatamente um mecanismo ideal e, além disso, a leitura do arquivo à medida que ele é escrito seria propensa a "rasgar" problemas.

Perto disso, existem muitos comandos. Elevar o número de arquivos para 2, um arquivo atual e seu antecessor imediato, de modo que, a qualquer momento, um tenha entre 1MiB e 2MiB da saída mais recente, com a saída não sendo copiada após ter sido gravada; e você tem algo que um monte de programas de log da família daemontools fazem por design. Eles são, em essência, exatamente esse tipo de " tee plus".

  • Com multilog de Dan Bernstein, de daemontools e Bruce Guenter's multilog do daemontools-encore:
    someprogram | multilog n2 s1048576 ./logdir/
  • Com o s6-log de Laurent Bercot do s6:
    someprogram | s6-log n2 s1048576 ./logdir/
  • svlogd de Gerrit Pape de runit com um arquivo de configuração que diz n2 s1048576 :
    someprogram | svlogd ./logdir/
  • Wayne Marshall tinylog do perp:
    someprogram | tinylog -k 1 -s 1048576 ./logdir/
  • Com meu cyclog do nosh:
    someprogram | cyclog --max-file-size 1048576 --max-total-size 1048576 ./logdir/

Leitura adicional

  • Jonathan de Boyne Pollard (2015). " Registro ". A família dos daemontools . Respostas frequentemente dadas.
  • Jonathan de Boyne Pollard (2017). Não use logrotate ou newsyslog neste século. . Respostas frequentemente dadas.
  • link
por 27.01.2017 / 21:43
1

No pacote apache2-utils está presente, o utilitário chamado rotatelogs atende plenamente às suas necessidades.

Sinopse:

rotatelogs [-l] [-L linkname ] [-p programa ] [-f] [-t] [-v] [-e] [- c] [-n número-de-arquivos ] logfile rotationtime | tamanho do arquivo (B | K | M | G) [ deslocamento ]

Manual completo você pode ler em este link .

    
por 01.07.2017 / 15:52