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'smultilog
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 dizn2 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
ounewsyslog
neste século. . Respostas frequentemente dadas. - link