Rotazione dei file di registro mentre il processo è ancora in esecuzione


16

Ho un processo in esecuzione che scrive l'output standard e l'errore standard in un file di registro /var/log/dragonturtle.log. Esiste un modo per ruotare il file di registro e il processo continua a scrivere nel nuovo file di registro senza interrompere il processo?

Cosa succede attualmente (data la configurazione logrotate di seguito):

  • Il processo scrive in /var/log/dragonturtle.log
  • Logrotate si sposta /var/log/dragonturtle.logsu/var/log/dragonturtle.log.1
  • Il processo continua a scrivere su /var/log/dragonturtle.log.1

Cosa vorrei che accadesse:

  • Il processo scrive in /var/log/dragonturtle.log
  • Logrotate copie /var/log/dragonturtle.login/var/log/dragonturtle.log.1
  • Logrotate tronca /var/log/dragonturtle.log
  • Il processo continua a scrivere su /var/log/dragonturtle.log

/etc/logrotate.d/dragonturtle:

/var/log/dragonturtle.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 644 dragonturtle dragonturtle
}

Risposte:


14

L' logrotateopzione che fa ciò che descrivi è copytruncate. Aggiungi semplicemente questa opzione alla tua configurazione logrotate esistente. Ecco l'estratto del manuale logrotate.conf:

   copytruncate
          Truncate  the  original log file in place after creating a copy,
          instead of moving the old log file and optionally creating a new
          one,  It  can be used when some program can not be told to close
          its logfile and thus might continue writing (appending)  to  the
          previous log file forever.  Note that there is a very small time
          slice between copying the file and truncating it, so  some  log-
          ging  data  might be lost.  When this option is used, the create
          option will have no effect, as the old log file stays in  place.

Stavo per suggerire qualcosa di molto più complicato che coinvolge controlli di inode e processi biforcati, ma questo è MODO più semplice.
Jeight
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.