In alternativa, puoi reindirizzare l'output attraverso strumenti progettati con lo scopo principale di mantenere insiemi di file di registro con limite di dimensione, ruotati automaticamente, come:
multilog
di Dan Bernstein da daemontools- Il
multilog
di Bruce Guenter da daemontools-encore - Il
s6-log
di Laurent Bercot da s6 - Il
svlogd
di Gerrit Pape da runit - Il
tinylog
di Wayne Marshall da perp - Il mio
cyclog
da nosh
Strumenti per poi elaborare multilog
-format i set di file di log includono, tra gli altri:
- Il
multilog-watch
di Russ Allbery logrange
- Il
multilog-stamptail
di Paul Kremer - I miei
follow-log-directories
da nosh - Il mio
export-to-rsyslog
da nosh
Ulteriori letture
- Jonathan de Boyne Pollard (2015). "Registrazione". La famiglia dei daemontools . Risposte frequenti.
- Jonathan de Boyne Pollard (2016). Non utilizzare
logrotate
onewsyslog
in questo secolo. . Risposte frequenti. - https://unix.stackexchange.com/a/326166/5132
il rotatelogs
strumento fornito con apache (nel file bin
dir) (vedi documenti) riceve input da stdin e ruota il registro dopo un periodo di tempo specifico
Ho avuto un problema simile e inizialmente avevo scartato logrotate ma si è scoperto che logrotate può effettivamente farlo bene, la direttiva chiave è "copytruncate ". Per qualche motivo quel termine non è venuto fuori da nessuna delle ricerche su Google che ho fatto, quindi aggiungo questa risposta per chiarire esattamente come usarlo per questo caso.
Il trucco è che funziona solo se il reindirizzamento viene eseguito con ">> " (aggiungi) invece di "> " (crea).
File di configurazione (truncate.cfg):
/tmp/temp.log {
size 10M
copytruncate
rotate 4
maxage 100
}
Programma di prova (non molla mai il file). Puoi vederlo riempire il disco e anche se l'eliminazione del file di registro sembrerà funzionare, in realtà non libererà spazio sul disco:
cat /dev/urandom >> /tmp/temp.log
Rotazione registro in esecuzione:
logrotate truncate.cfg