Comment puis-je réparer “/etc/cron.daily/logrotate: gzip: stdin: la taille du fichier a changé, tandis que la compression”?
dans les derniers jours, je reçois tous les jours de messagerie à partir de cron de logrotate tâche:
/etc/cron.daily/logrotate:
gzip: stdin: la taille du fichier a changé, tandis que la compression
Comment puis-je résoudre ce problème?
Grâce,
Gian Marco.
- Voir ici
Vous devez vous connecter pour publier un commentaire.
Voici un blog en français qui donne une solution.
En anglais, vous pouvez lire ce rapport de bug.
Pour résumer:
Vous devez d'abord ajouter le
--verbose
option dans le script/etc/cron.daily/logrotate
pour avoir plus d'informations la prochaine fois qu'il exécute pour identifier la rotation du journal la cause du problème.Suivante, vous devez ajouter le
delaycompress
option dans la configuration de logrotate.Comme exemple, j'ai ajouter de la nginx est logrotate configiguration dans /etc/logrotate.d/nginx:
delaycompress
va seulement vous aider dans certains cas. Voir ma réponse.upstart
va fermer (et de réouverture) de son fichier de log lorsque il constate que le fichier est supprimé. Cependant, si vous regardez ce gzip n', vous voyez que ce n'est pas supprimer le fichier jusqu'à ce que après c'est une écriture du fichier de sortie. Cela signifie qu'il y a toujours une situation de concurrence où les lignes du journal peuvent être perdus pour les lignes des journaux écritsgzipping
.Vous pouvez désactiver l'avertissement à l'aide de
gzip --quiet
, mais vraiment que de ne pas cacher le fait que vous pourriez encore dégagé les lignes du journal.Cela signifie que
delaycompress
n'est pas un générique pour résoudre ce. C'est un correctif spécifique à un problème spécifique.La vraie solution pour cela est probablement une combinaison de
delaycompress
et d'être en mesure d'envoyer un signal au processus. Il fera de la condition de la course aller loin dans la pratique (sauf si vous faites pivoter plusieurs fois par seconde 🙂 ).