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
multilogde Dan Bernstein, de daemontools e Bruce Guenter'smultilogdo daemontools-encore:someprogram | multilog n2 s1048576 ./logdir/
- Com o
s6-logde Laurent Bercot do s6:someprogram | s6-log n2 s1048576 ./logdir/
-
svlogdde Gerrit Pape de runit com um arquivo de configuração que dizn2 s1048576:someprogram | svlogd ./logdir/
- Wayne Marshall
tinylogdo perp:someprogram | tinylog -k 1 -s 1048576 ./logdir/
- Com meu
cyclogdo 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
logrotateounewsyslogneste século. . Respostas frequentemente dadas. - link