Réponses:
#!/bin/bash
touch /script_logs/test.log
MaxFileSize=2048
while true
do
sh test.sh >> /script_logs/test.log
#Get size in bytes**
file_size=`du -b /script_logs/test.log | tr -s '\t' ' ' | cut -d' ' -f1`
if [ $file_size -gt $MaxFileSize ];then
timestamp=`date +%s`
mv /script_logs/test.log /script_logs/test.log.$timestamp
touch /script_logs/test.log
fi
done
J'ai supprimé le "&" car cela peut provoquer un problème.
cp
et mv
, puis-je supprimer le fichier journal, puis-je créer un nouveau fichier journal avec le même nom? (Mon exigence est, si le fichier journal est atteint une certaine limite, je veux supprimer ce fichier journal, puis créer un nouveau fichier )
>>
pour ajouter au fichier journal, >
le remplacera encore et encore.
>
, j'obtiens tail: test.log: file truncated Hello World!
.... Si j'utilise >>
, j'obtiens un message de journal correct, mais la taille du fichier augmente. Aucune condition vérifiant la condition ... ;-(
que diriez-vous d'utiliser savelog
?
Il est disponible dans Debian et RH et à peu près toutes les autres distributions Linux que je connais. C'est un script shell / bin / sh, donc devrait également fonctionner sur tout autre Unix.
par exemple avant d'écrire quoi que ce soit à test.log
exécuter savelog -n -c 7 test.log
. Cela conservera les 7 versions non vides les plus récentes de test.log. Par défaut, il compressera les journaux tournés (mais cela peut être désactivé avec -l
).
Si vous en avez besoin, vous pouvez vérifier la taille de test.log
et uniquement savelog
si elle dépasse une certaine taille.
/usr/bin/savelog
script shell sur sources.debian.net/src/debianutils/4.7
savelog
aucune de mes boîtes RHEL / CentOS 5/6, donc je viens de la télécharger ad hoc, et cela semble fonctionner très bien pour mes besoins.
savelog
est qu'il renomme le fichier mais prend ensuite beaucoup de temps pour compresser les anciens avant de terminer. Pendant ce temps, le journal .0 contient déjà les entrées du jour suivant. Idéalement, le temps entre la rotation du journal et la signalisation du processus de réouverture du journal devrait être minimal. Je désactive savelog
la fonction de compression de pour cette raison.
J'ai écrit un logrotee ce week-end. Je ne le ferais probablement pas si j'ai lu la grande réponse demultilog
@ JdeBP .
Je me suis concentré sur le fait qu'il soit léger et capable de bzip2 ses morceaux de sortie comme:
verbosecommand | logrotee \
--compress "bzip2 {}" --compress-suffix .bz2 \
/var/log/verbosecommand.log
Il reste encore beaucoup à faire et à tester.
Comme je ne peux pas encore ajouter de commentaires à la réponse acceptée , un indice BusyBox , où du
n'a pas de -b
drapeau:
du /var/log/file | tr -s '\t' ' ' | cut -d' ' -f1