Logrotate et fichiers ouverts

21

Comment logrotate gère-t-il les fichiers ouverts? Logrotate peut-il faire pivoter les fichiers ouverts par un processus?

Kyle Brandt
la source

Réponses:

7

Pour les applications qui n'acceptent pas les signaux de logrotate comme Rory l'a décrit, j'utilise quelques méthodes.

  1. Utilisez l'option copytruncate
  2. Ajouter une instruction post-rotation pour redémarrer le service

La décision à utiliser dépend de la taille des fichiers journaux et de la nécessité de journaux homogènes. Ce sera une analyse des risques de votre part. Cependant, pour donner un exemple, j'utilise un redémarrage post-rotation sur certains journaux où je devrais réellement utiliser un copytruncate. Cependant, les fichiers comportent souvent plusieurs concerts et la copie peut prendre suffisamment de temps pour qu'il soit préférable d'en perdre une ou deux secondes chaque nuit.

Scott Pack
la source
Désolé pour beign trop tard, mais je suppose que je pourrais gagner du temps aux autres à la recherche de ce problème. Jetez un œil à une autre approche pour résoudre ce problème. unix.stackexchange.com/a/122942/189725
Victor
17

On dirait que je pourrais vouloir ce qui suit, mais toujours intéressé par l'expertise de quiconque sur le sujet:

copytruncate
              Truncate  the original log file to zero size in place after cre‐
              ating a copy, instead of moving the old log file and  optionally
              creating  a new one. 
Kyle Brandt
la source
1
C'est comme faire "cp something.log something.log.1;:> something.log" pour que le fichier soit vide mais que le descripteur de fichier ne soit pas cassé. Le problème est le temps entre les 2 commandes, vous pourriez perdre une ligne de journaux
rayon
5

logrotate enverra le signal correct au processus pour lui dire de rouvrir les fichiers journaux. Il fonctionne prêt à l'emploi pour des choses comme apache ou mysql.

Vous pouvez le voir dans le script postrotate pour apache. Si vous avez votre propre démon et que vous voulez que logrotate fonctionne avec lui, assurez-vous qu'il écoute un certain signal et rouvre les fichiers journaux.

Si vous ne pouvez pas modifier le programme, vous pouvez voir si le démon a un moyen de vider automatiquement les journaux. Ou ajoutez une pré-rotation qui arrête le serveur et une post-rotation qui le redémarre.

Rory
la source
D'accord, je ne pense pas que j'obligerai les développeurs à le faire, mais c'est bien de savoir quelle est la norme :-)
Kyle Brandt