Existe-t-il un moyen de conserver la taille du fichier journal fixe sans le faire pivoter par un nouveau fichier vide et supprimer (ou archiver) l'ancien fichier. Par exemple, si je règle la taille maximale du fichier journal à 1 Mo, une fois la taille du fichier augmentée au-delà de cette limite, il sera automatiquement bloqué, le texte est ajouté à la «queue» et la partie la plus ancienne du texte s'affiche pour conserver la taille du fichier 1 Mo .
13
rm -f *.tar.gz.*
Réponses:
Vous pouvez écrire un petit script bash pour ce faire. Limitez simplement le fichier à un certain nombre d'octets en utilisant
tail -c
et écrasez le fichier.de
man tail
:la source
Votre seule solution peut consister à écrire votre propre système de fichiers d'espace utilisateur ou à contribuer à un système existant. Regardez la liste partielle du système de fichiers dans l'espace utilisateur
Si vous n'avez pas les compétences pour contribuer, offrez une publicité de projet ou $$$ ou les deux, pour l'ajouter pour vous.
J'aimerais avoir le temps de le faire, j'ai toujours voulu quelque chose exactement comme ça.
la source
Vous pouvez faire quelque chose de similaire en utilisant un FIFO, qui est un peu comme un fichier de taille zéro octet.
Cependant, notez que si rien n'est en cours de lecture à partir de ce fichier, le processus syslog peut devenir bloqué et arrêter d'écrire dans TOUS vos fichiers journaux. Je ne sais pas si ce comportement a été modifié avec les nouvelles versions d'Ubuntu / CentOS.
Un exemple ici
Pour un autre exemple, essayez quelque chose comme ça.
Faites votre FIFO:
Et ajoutez ceci à (r) syslog.conf, puis redémarrez syslog:
Affichez ensuite le FIFO à partir d'une seule fenêtre:
Et dans une autre fenêtre, envoyez des trucs à syslog:
Vous devriez voir les lignes "Test *" dans la sortie
cat
ci - dessus.Cette fonctionnalité peut être idéale pour le débogage, surtout si vous ne souhaitez pas conserver les données plus longtemps. Par exemple, si vous voulez tout voir à l'exception du spam du pare-feu, vous pouvez faire quelque chose comme ceci:
la source
Voici ma deuxième réponse. C'est assez hackish.
Utilisez watch (1) pour exécuter à plusieurs reprises
tail --bytes=1024
(les 1024 derniers octets du fichier journal, merci à @jjclarkson pour cette réponse).Et puis visualisez le fichier avec:
La différence entre
watch
et une boucle while est qu'ellewatch
ne mettra à jour /tmp/messages.watch que s'il y a eu des modifications dans / var / log / messages.Et bien, je suppose que vous pourriez mettre un
test
dans la boucle while pour que la queue ne soit exécutée que si / var / log / messages a été mis à jour, mais je ne vais pas le comprendre maintenant.la source
https://groups.google.com/group/mod.sources/browse_thread/thread/b2136b3ab7e924e/f785b37c218bb576?hl=en&ie=UTF-8&q=prune+log+file&pli=1
De nombreux démons (la plupart? Tous?) Rouvriront leurs fichiers journaux s'ils reçoivent un signal HUP (par exemple par le même travail cron qui exécute le pruneau)
la source
Je suis certain que l'affiche originale a trouvé une solution après 8 ans. Voici un autre pour ceux qui peuvent lire ce fil ...
curtail limite la taille de la sortie d'un programme et préserve les 200 derniers Mo de sortie avec la commande suivante:
run_program | curtail -s 200M myprogram.log
https://github.com/Comcast/Infinite-File-Curtailer
la source