Question logrotate semble fonctionner incorrectement


J'utilise:
Workdesk Linux 3.16.0-31-generic # 43 ~ 14.04.1-Ubuntu SMP Mar 10 mars 20:13:38 UTC 2015 x86_64 x86_64 x86_64 GNU / Linux

ID du distributeur: Ubuntu
Description: Ubuntu 14.04.2 LTS
Version: 14.04
Nom de code: fidèle

logrotate 3.8.7-1ubuntu1 amd64

J'essaie de tester le comportement de logrotate.

mon fichier de conf est:

/home/user/test/*.log {  
       daily  
       rotate 2  
       ifempty  
       su user user  
}  

ls /home/user/test/*.log les sorties

/home/user/test/1.log

sudo logrotate -fv /etc/logrotate.d/r

les sorties

reading config file /etc/logrotate.d/r

Handling 1 logs

rotating pattern: /home/user/test/*.log  forced from command line (2 rotations)  
empty log files are rotated, old logs are removed  
switching euid to 1000 and egid to 1000  
considering log /home/user/test/1.log  
  log needs rotating  
rotating log /home/user/test/1.log, log->rotateCount is 2  
dateext suffix '-20150327'  
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'  
renaming /home/user/test/1.log.2 to /home/user/test/1.log.3 (rotatecount 2, logstart 1, i 2),  
old log /home/user/test/1.log.2 does not exist  
renaming /home/user/test/1.log.1 to /home/user/test/1.log.2 (rotatecount 2, logstart 1, i 1),  
old log /home/user/test/1.log.1 does not exist  
renaming /home/user/test/1.log.0 to /home/user/test/1.log.1 (rotatecount 2, logstart 1, i 0),  
old log /home/user/test/1.log.0 does not exist  
log /home/user/test/1.log.3 doesn't exist -- won't try to dispose of it  
renaming /home/user/test/1.log to /home/user/test/1.log.1  
switching euid to 0 and egid to 0  

et après ls les sorties

1.log.1  

et c'est tout

Quelqu'un peut-il expliquer la rotation du processus?
1) Qu'est-ce que "renommer /home/user/test/1.log.0 en /home/user/test/1.log.1"? Si j'ai le nombre de rotations = 0
2) Où est le fichier 1.log?
3) où est 1.log.0? Si je comprends bien, je ne devrais recevoir que le fichier vide 1.log et c'est tout.


2
2018-03-27 13:53


origine




Réponses:


Votre fichier de configuration vous demande de faire pivoter le fichier *.log dans /home/user/test tous les jours même si le fichier est vide et conserver deux anciens fichiers.

logrotate effectuez cette action (comme vous pouvez le voir dans la sortie détaillée):

  • changer d'utilisateur et de groupe (à cause de su user user)
  • renommer les anciens journaux s'ils existent, à partir de 1.log.2 (en raison de rotate 2)
  • retirer 1.log.3 si existe (à cause de rotate 2)
  • renommer le courant 1.log dans 1.log.1
  • repasser utilisateur et groupe

Donc, comme prévu, à la fin, vous avez trouvé 1.log.1 qu'il devrait être 1.log fichier renommé.

Rename process print error, mais logrotate n'échoue pas si l'ancien fichier journal n'existe pas, qui n'a pas encore été créé les jours précédents.

Si une application écrit en 1.log, après la rotation du journal, il écrit toujours 1.log.1 car renommer le fichier ne change pas l’inode du fichier. Dans ce cas, vous devez forcer l'application à fermer le fichier journal actuel et à le rouvrir, en utilisant son redémarrage régulier.

Voici un utile lien sur comment faire

Je ne suis pas capable d'expliquer pourquoi Logrotate tente de renommer 1.log.0, il semble une erreur de mise en œuvre qui ne cause aucun bug.


0
2018-04-19 19:10