Rotation des fichiers journaux pendant que le processus est toujours en cours d'exécution

16

J'ai un processus en cours d'exécution qui écrit la sortie standard et l'erreur standard dans un fichier journal /var/log/dragonturtle.log. Est-il possible de faire pivoter le fichier journal et de continuer à écrire dans le nouveau fichier journal sans tuer le processus?

Que se passe-t-il actuellement (compte tenu de la configuration logrotate ci-dessous):

  • Le processus écrit dans /var/log/dragonturtle.log
  • Logrotate passe /var/log/dragonturtle.logà/var/log/dragonturtle.log.1
  • Le processus continue d'écrire dans /var/log/dragonturtle.log.1

Ce que j'aimerais arriver:

  • Le processus écrit dans /var/log/dragonturtle.log
  • Logrotate copie /var/log/dragonturtle.logsur/var/log/dragonturtle.log.1
  • Logrotate tronque /var/log/dragonturtle.log
  • Le processus continue d'écrire dans /var/log/dragonturtle.log

/etc/logrotate.d/dragonturtle:

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

Réponses:

14

L' logrotateoption qui fait ce que vous décrivez est copytruncate. Ajoutez simplement cette option à votre configuration logrotate existante. Voici l'extrait du manuel 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.
jordanm
la source
J'allais suggérer quelque chose de bien plus compliqué impliquant des vérifications d'inode et des processus fourchus, mais c'est bien plus simple.
Jeight