web-dev-qa-db-fra.com

Comment implémenter Logrotate dans le script shell

test.sh

#!/bin/bash
echo "Hello World"

test2.sh

#!/bin/bash
while true
do
    sh test.sh >> /script_logs/test.log &
done

Je souhaite mettre en œuvre la lecture de Logrotate pour contrôler la taille du fichier journal, alors comment mettre en œuvre la logrotate, si la situation est comme ci-dessus?

12
Veerendra Kakumanu

que diriez-vous d'utiliser savelog?

Il est disponible à Debian et Rh et à peu près toutes les autres distro Linux que je connais. C'est un script de shell/bin/sh shell, donc devrait fonctionner sur tout autre Unix aussi.

par exemple. Avant d'écrire quelque chose à test.log Cours savelog -n -c 7 test.log. Cela conservera les 7 versions non vides de test.log. Par défaut, il compressera des grumes tournées (mais cela peut être désactivé avec -l).

Si vous en avez besoin, vous pouvez vérifier la taille de test.log et seulement _ savelog IT s'il est sur une certaine taille.

24
cas

J'ai écrit un Logrotee ce week-end. Je ne voudrais probablement pas si j'ai lu @ jdebp's bonne réponse sur multilog .

Je me suis concentré sur le poids léger et être capable de bzip2 ses morceaux de sortie comme:

verbosecommand | logrotee \
  --compress "bzip2 {}" --compress-suffix .bz2 \
  /var/log/verbosecommand.log

Il y a beaucoup à faire et à tester encore.

2
Victor Sergienko

Comme je ne peux pas encore ajouter des commentaires à la réponse acceptée , A Busybox indice, où du n'a pas une -b drapeau:

du /var/log/file | tr -s '\t' ' ' | cut -d' ' -f1
0
lnksz