2010-06-15 23 views

Répondre

4

L'astuce habituelle est:

echo -n > /var/log/name.log 

qui travaillerait à condition que votre démon correctement ouvrez le fichier journal en mode append. La plupart d'entre eux le font. (Cette commande tronque simplement la taille du fichier à zéro et n'intervient pas avec un autre processus écrit dans le fichier en mode ajout.)

Une autre option consiste à vérifier si votre démon prend en charge syslog et à l'activer. La plupart des Linux sont maintenant livrés avec un collecteur de journaux qui automatiquement (en fonction des règles, etc.) archive les fichiers syslog.

+0

Ainsi, si un fichier est ouvert en mode ajout et qu'un autre processus le tronque, le premier processus peut continuer à écrire dessus. Merci! – arturh

+0

Le point du mode ajout est que l'opération d'écriture recherche atomiquement à la fin du fichier avant l'écriture réelle - et écrit à la fin du fichier. Si un processus tronquait le fichier, le démon ne remarquerait même pas qu'en raison du mode d'ajout, le système d'exploitation cherchera automatiquement à la fin du fichier, maintenant à l'offset 0. – Dummy00001

0

Si le nom de fichier est constant, vous pouvez essayer de créer un fifo à la place du fichier journal et le lire dans autant de fichiers journaux que vous le souhaitez.

+0

Ceci est une bonne option, mais nécessite d'écrire plus de code pour gérer le fifo. Merci. – arturh

0

Pour découper le fichier journal, mais pour garder les 1000 dernières lignes de celui-ci:

echo "$(tail -1000 daemonlog)" > daemonlog