Logrotate: comment accéder au fichier de sortie en postrotate

15

Je fais tourner les Nginxjournaux quotidiennement (avec dateext). Après la rotation, je veux analyser le fichier pour le jour qui vient de s'écouler et compiler un e-mail avec le nombre d'erreurs renvoyées par le serveur Nginx.

Comment puis-je accéder au fichier de sortie dans la section postrotate / endscript de logrotate?

ibz
la source
Pouvez-vous nous en dire plus?
Khaled
Terminé. Désolé, je pensais que c'était assez clair. :)
ibz

Réponses:

4

Je ne connais aucune variable que vous pouvez utiliser si c'est ce que vous recherchez. Cependant, immédiatement après la rotation du journal, vous devez savoir précisément le nom vers lequel le fichier a été tourné en fonction de la configuration que vous avez définie pour la rotation ( /var/log/somefile.1ou similaire).

Il serait peut-être plus facile de répondre si vous décrivez le problème réel que vous essayez de résoudre?

marque
la source
Je pensais que le problème n'était pas pertinent. Expliqué plus en détail maintenant. Oui, je peux simplement utiliser la date pour obtenir le nom du fichier, mais j'espérais pouvoir l'obtenir via une variable ou quelque chose, ce qui aurait plus de sens.
ibz
3
On dirait que les larsks ont atteint exactement ce que vous voulez. $ 1 est la variable que vous recherchez.
marque
17

Si vous n'utilisez pas la directive "sharedscripts", votre script postrotate reçoit, en tant que $ 1, le fichier qui a déclenché la rotation du journal. Cela peut être utile si vous essayez d'utiliser un script générique avec plusieurs strophes logrotate. Autrement dit, étant donné quelque chose comme ceci:

/var/log/sample1.log /var/log/sample[23].log {
  ..config...
}

Si des fichiers correspondants doivent être tournés, votre script sera appelé avec $ 1 défini sur "/var/log/sample1.log", "/var/log/sample2.log" ou "/var/log/sample3.log" "selon le cas. Vous pouvez ensuite ajouter ".1" pour trouver le fichier qui vient d'être pivoté.

Si vous utilisez l'option "sharedscripts", votre script sera appelé avec $ 1 défini sur "/var/log/sample1.log /var/log/sample[23[.log" (ce qui vous aidera à identifier une strophe particulière mais pas le fichier exact).

Espérons que cela vous donne un point de départ. Notez que cela ne fonctionnera que pour logrotate> v3.7.5.

larsks
la source
1
Pratique. En fait, les scripts avant et après rotation semblent recevoir le nom de fichier pivoté comme $ 1, ce qui est exactement ce que la question demande.
marquez
1
@mark le script reçoit le nom du fichier d' entrée , pas le fichier de sortie
kbolino