Quelqu'un a-t-il déjà rencontré des problèmes avec logrotate qui provoquent la rotation d'un fichier journal, puis le retour à la même taille qu'il était à l'origine? Voici mes conclusions:
Script Logrotate:
/var/log/mylogfile.log { tourner 7 du quotidien compresse olddir / log_archives missingok notifempty copiertronquer }
Sortie détaillée de Logrotate:
copie de /var/log/mylogfile.log vers /log_archives/mylogfile.log.1 tronquer /var/log/mylogfile.log compression du journal avec: / bin / gzip suppression de l'ancien journal /log_archives/mylogfile.log.8.gz
Le fichier journal après la troncature se produit
[root @ server ~] # ls -lh /var/log/mylogfile.log -rw-rw-r-- 1 part1 part1 0 jan 11 17:32 /var/log/mylogfile.log
Littéralement quelques secondes plus tard:
[root @ server ~] # ls -lh /var/log/mylogfile.log -rw-rw-r-- 1 partie1 partie1 3.5G 11 janvier 17:32 /var/log/mylogfile.log
Version RHEL:
[root @ server ~] # cat / etc / redhat-release Red Hat Enterprise Linux ES version 4 (Nahant Update 4)
Version de Logrotate:
[root @ DAA21529WWW370 ~] # rpm -qa | grep logrotate logrotate-3.7.1-10.RHEL4
Quelques notes:
- Le service ne peut pas être redémarré à la volée, c'est pourquoi j'utilise copytruncate
- Les journaux tournent chaque nuit, selon le
olddir
répertoire contenant les fichiers journaux de chaque nuit.
Je suis extrêmement confiant que Kjetil l'a atteint. Drew, vous n'êtes peut-être pas encore convaincu par son explication, mais je vous invite à lire attentivement ce qu'il a dit.
Si vous l'acceptez, le correctif consiste soit à arrêter et à redémarrer votre application lorsque les journaux sont tournés, soit à utiliser un outil comme les "rotatelogs" d'Apache, où vous alimentez la sortie du journal vers l'outil via un tuyau, et l'outil prend soin de faire tourner le fichier journal de temps en temps. Par exemple, une de mes instances Apache se connecte avec
ce qui provoque beaucoup de fichiers journaux avec des noms comme
apparaître sans redémarrer apache; Je peux ensuite les compresser manuellement après coup. Notez comment la rotation est effectuée chaque semaine, c'est-à-dire toutes les 604800 secondes, cet argument étant transmis à
rotatelogs
.Si vous ne pouvez pas arrêter et redémarrer l'application, et qu'elle ne peut pas se connecter via un canal, alors je pense que vous avez un vrai problème. Peut-être que d'autres auront des suggestions.
la source
ce serait vraiment génial si vous pouviez envoyer la totalité du logrotate.
Pourquoi essayer d'utiliser kill -HUP? (Rechargement classique ne redémarre pas ).
Vérifiez également
lsof
qui accède au fichier.la source
kill -HUP
car cette application ne peut pas être touchée de quelque façon que ce soit - c'est une application sensible que je ne possède pas (je ne la gère même pas - je ne gère que le côté OS), donc je dois pouvoir faire les logrotations cette façon./etc/cron.daily
. Question à tous: Y a-t-il quelque chose que le script logrotate fait différemment de l'exécution manuelle de logrotate? Mon script logrotate ressemble littéralement/usr/sbin/logrotate /etc/logrotate.conf
. C'est assez déroutant.Utilisez simplement ">>" qui signifie ajouter au lieu de ">" qui signifie créer à partir de vos scripts qui écrivent dans ce fichier. J'ai eu exactement le même problème et je l'ai résolu en utilisant append dans mon script.
SomeScript.sh >> output.txt
J'espère que c'est plus clair.
la source
>
d'un script. De plus, cette réponse prête à confusion car il existe une différence majeure entre>
et>(
)
dans les scripts. Enfin, si le code faisant l'écriture est mis à jour, il vaudrait beaucoup mieux qu'il commence simplement à écrire dans le nouveau fichier journal aprèslogrotate
avoir fait son travail.