Est-il possible d'exécuter manuellement une vérification de la rotation du journal?

541

Est-il possible d'exécuter une itération de logrotate manuellement sans la planifier sur un certain intervalle?

Vladimir
la source
3
Le problème avec logrotate est qu'il a un fichier de configuration globale et qu'il ne vous permet PAS d'exécuter un seul fichier de sous-configuration de rotation de journal tout en appliquant les options définies dans le fichier de configuration globale. C'est-à-dire qu'il n'a pas un bon moyen d'exécuter une seule vérification du fichier de rotation des journaux, exactement comme il le ferait chaque nuit à partir de cron. Il pourrait s'agir d'une option «limiter ces fichiers journaux», ou mieux encore, «exécuter la configuration globale, mais uniquement inclure ce fichier de sous-configuration».
anthony

Réponses:

717

Oui: logrotate --force $CONFIG_FILE

pilcrow
la source
115
notez que cela --forcefera tourner les fichiers même s'ils ne répondent pas aux critères spécifiés tels que la taille, l'âge, etc.
xofer
4
Si vous placez le fichier de configuration logrotate dans /etc/logrotate.d/custom.conf, cela signifie-t-il que vous n'avez pas besoin de spécifier une taille / heure à laquelle le journal doit tourner automatiquement? Ou devriez-vous placer la configuration dans un dossier différent si vous n'avez pas l'intention de la faire tourner automatiquement?
Damainman
18
Le critère "notifempty" n'est pas ignoré par "--force". Cela m'a dérouté pendant un certain temps, donc je mentionne cela comme une exception à la déclaration @xofer.
thelogix
16
Vous pouvez simplement faire pivoter tout avec logrotate --force /etc/logrotate.d/(juste le nom du répertoire)
fcm
1
Il est vrai que --forcecela forcera la rotation même si les fichiers ne répondent pas aux critères (âge, taille, etc.), mais veuillez considérer que c'est le seul moyen de repérer les problèmes réels avec lesquels n'apparaîtrait pas logrotate -d(par exemple, j'avais un serveur à court de l'espace en raison de logrotate ne fonctionne pas depuis des mois ... et grâce à --forcej'ai compris qu'il y avait des File existserreurs. J'ai supprimé manuellement ces fichiers et maintenant la rotation fonctionne à nouveau correctement!
lucaferrario
559

logrotate -d [your_config_file] invoque le mode débogage, vous donnant une description détaillée de ce qui se passerait, mais en laissant les fichiers journaux intacts.

Sandover
la source
81
ceux qui sont venus ici à la recherche d'une réponse à une question comme "comment puis-je tester ma conf logrotate?" peut prendre celui-ci comme une réponse, car il
teste
pas gêné par votre approche, j'ai essayé avec logrotate --forceet ça marche bien.
Benyamin Jafari
122

Si vous souhaitez forcer l'exécution d'un seul répertoire spécifique ou des fichiers journaux du démon, vous pouvez généralement trouver la configuration dans /etc/logrotate.d, et ils fonctionneront de manière autonome.

Gardez à l'esprit que la configuration globale spécifiée dans /etc/logrotate.confne s'appliquera pas, donc si vous faites cela, vous devez vous assurer de spécifier toutes les options que vous souhaitez dans le /etc/logrotate.d/[servicename]fichier de configuration spécifiquement.

Vous pouvez l'essayer avec -dpour voir ce qui se passerait:

logrotate -df /etc/logrotate.d/nginx

Ensuite, vous pouvez exécuter (en utilisant nginx comme exemple):

logrotate -f /etc/logrotate.d/nginx

Et les journaux nginx seuls seront tournés.

trisweb
la source
1
C'est bien beau, mais vous perdez tous les paramètres globaux que vous avez dans le "/etc/logrotate.conf". J'ai écrit un script pour fusionner les fichiers logrotate globaux et spécifiques, puis les utiliser pour résoudre ce problème. (voir ma réponse).
anthony
L'utilisation logrotate -d /etc/logrotate.confpassera également par tout autre fichier de configuration inclus.
wmassingham
61

Vous pouvez l'exécuter en mode verbeux + force.

logrotate -vf /etc/logrotate.conf

vivekv
la source
36

La façon d'exécuter tout logrotate est:

logrotate -f /etc/logrotate.conf

qui exécutera le fichier logrotate principal, qui inclut également les autres configurations logrotate

Allen Hancock
la source
21

Exécutez la commande suivante, la façon d'exécuter la rotation de journal spécifiée:

logrotate -vf /etc/logrotate.d/custom

Options:

-v: afficher le processus

-f: forcer l'exécution

personnalisé: paramètre de journal défini par l'utilisateur

par exemple: mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}
wangc
la source
plus1 pour avoir fourni un exemple complet. PS Comment pouvons-nous déterminer ce que logrotate fait réellement aux fichiers ?
personal_cloud
7

éditez /var/lib/logrotate.status pour réinitialiser la date de «dernière rotation» sur le fichier journal que vous souhaitez tester.

Ensuite, courez logrotate YOUR_CONFIG_FILE.

Ou vous pouvez utiliser l'indicateur --force, mais l'édition de logrotate.status vous donne plus de précision sur ce qui tourne et ne tourne pas.

Ben Aveling
la source
Ce /var/lib/logrotate.statusfichier n'existe pas sur Debian Squeeze.
Lashae
Essayez / var / lib / logrotate / status. Je ne sais pas si c'est une chose debian / redhat, ou si je mets "." où j'aurais dû mettre "/".
Ben Aveling
2

Créé un script shell pour résoudre le problème.

http://www.ict.griffith.edu.au/anthony/software/#logrotate_one

Ce script exécutera uniquement le fichier de sous-configuration logrotate unique trouvé dans "/etc/logrotate.d", mais inclura les paramètres globaux dans le fichier de configuration globale "/etc/logrotate.conf". Vous pouvez également utiliser d'autres otpions pour le tester ...

Par exemple...

  logrotate_one -d syslog
anthony
la source