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:
multilogdi Dan Bernstein da daemontools- Il
multilogdi Bruce Guenter da daemontools-encore - Il
s6-logdi Laurent Bercot da s6 - Il
svlogddi Gerrit Pape da runit - Il
tinylogdi Wayne Marshall da perp - Il mio
cyclogda nosh
Strumenti per poi elaborare multilog -format i set di file di log includono, tra gli altri:
- Il
multilog-watchdi Russ Allbery logrange- Il
multilog-stamptaildi Paul Kremer - I miei
follow-log-directoriesda nosh - Il mio
export-to-rsyslogda nosh
Ulteriori letture
- Jonathan de Boyne Pollard (2015). "Registrazione". La famiglia dei daemontools . Risposte frequenti.
- Jonathan de Boyne Pollard (2016). Non utilizzare
logrotateonewsyslogin 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