GNU/Linux >> Tutoriels Linux >  >> Linux

Existe-t-il un moyen approprié d'effacer les journaux ?

Solution 1 :

Vous pouvez utiliser :

> /var/log/mail.log

Cela tronquera le journal sans que vous ayez à modifier le fichier. C'est aussi un moyen fiable de récupérer de l'espace. Parfois, les gens font l'erreur d'utiliser rm sur le journal puis de recréer le nom de fichier, si un autre processus a le fichier ouvert, vous ne récupérez pas l'espace jusqu'à ce que ce processus ferme son contrôle et vous pouvez gâcher ses autorisations.

Aussi, si vous regardez le contenu du journal, vous aimerez peut-être utiliser le tail commande :

tail -f /var/log/mail.log

Ctrl-C cassera la queue.

Solution 2 :

Oui, il existe une méthode appropriée :vous n'effacez pas journaux du tout. Vous tournez leur. La rotation implique de basculer la sortie du journal vers un nouveau fichier, sous le même nom, les N fichiers journaux précédents étant conservés sous un ensemble de N noms de fichiers associés.

La rotation des journaux dépend de la façon dont on les écrit en premier lieu. C'est un point souvent négligé. Certaines des réponses ici l'abordent au moins, en mentionnant que certains programmes de journalisation conservent un descripteur de fichier ouvert pour le fichier journal, donc la simple suppression du fichier ne libérera pas d'espace, ni même basculera la sortie vers un nouveau fichier journal.

Si le programme qui écrit le fichier journal est multilog du daemontools package, par exemple, alors vous ne faites rien du tout pour faire pivoter les journaux — pas de scripts manuels, pas de cron travaux. Dites simplement multilog cette sortie de journal est dans un répertoire, et il conservera lui-même un ensemble de N fichiers journaux automatiquement pivotés et limités en taille dans ce répertoire.

Si le programme qui écrit les fichiers journaux est svlogd du runit package, pour un autre exemple, alors la même chose s'applique. Vous ne faites rien du tout à part pointer l'outil vers un répertoire. Il maintiendra lui-même un ensemble de N fichiers journaux automatiquement pivotés et limités en taille dans ce répertoire.

Si vous utilisez rsyslog pour écrire des fichiers journaux, le programme de journalisation peut être invité à s'arrêter une fois que le fichier journal a atteint une certaine taille et à exécuter un script. Vous devez écrire la viande du script, pour renommer le fichier journal et supprimer les anciens fichiers journaux en fonction des contraintes de taille totale, mais au moins le programme de journalisation a fermé le fichier et suspendu l'écriture du journal pendant que cela se produit.

L'ancien syslogd manière de faire tourner les journaux, toujours attendue par les programmes de journalisation tels que syslog-ng et illustrée par des outils tels que logrotate mentionné par djangofan dans une autre réponse ici, est un peu plus aléatoire. On exécute un cron qui renomme périodiquement les fichiers journaux et redémarre le démon de journalisation (en utilisant le superviseur du démon sous lequel il s'exécute). Le problème avec cela, bien sûr, c'est qu'il n'impose pas de limite de taille globale. Les semaines lentes, on peut obtenir N très petits fichiers journaux quotidiens, tandis que les jours de pointe, on peut obtenir 1 très gros fichier journal qui dépasse largement la limite de taille.

C'est pourquoi des outils plus récents et meilleurs comme multilog et svlogd avoir des options de configuration de taille de fichier et vérifier eux-mêmes la taille des fichiers journaux, bien sûr. Le monde a appris que l'interrogation des journaux selon un calendrier avec cron emplois, ou même un logrotate démon, laisse les fenêtres pour que la taille soit erronée, et que le bon endroit pour faire ces vérifications, et donc rigoureusement appliquer des plafonds de taille définis par l'administrateur afin que ses fichiers journaux n'avalent jamais la partition sur laquelle ils se trouvent, se trouve dans le programme qui écrit réellement les fichiers en premier lieu.

Solution 3 :

Vous pouvez aussi l'utiliser..

truncate /opt/package/logs/*.log --size 0

Ici, tous les fichiers journaux dans /opt/package/logs deviendront vides.

Solution 4 :

Oui, il existe un outil pour Linux appelé LogRotate .

Solution 5 :

Si la raison pour laquelle vous effacez le journal est de libérer de l'espace, vous pouvez lui envoyer un cat /dev/null, sans interrompre les programmes qui y écrivent. Ne les supprimez jamais ! certains logiciels peuvent se plaindre en cessant de fonctionner ou en ignorant complètement le journal jusqu'au prochain redémarrage

cat /dev/null > /path/to/logfile

# to empty all the logs in a directory
for i in /var/log/*; do cat /dev/null > $i; done

Linux
  1. Comment vider un fichier journal sous Linux

  2. Quelle est la bonne façon d'utiliser inotify ?

  3. Existe-t-il un moyen de recadrer un fichier NETCDF ?

  4. Rotation du journal de stdout ?

  5. Existe-t-il un moyen de reprendre un scp interrompu d'un fichier?

Configuration de logrotate sous Linux

Rotation des fichiers journaux

Journaux système

Existe-t-il un moyen de modifier un signet Nautilus (gestionnaire de fichiers) existant ?

Existe-t-il un moyen de modifier les raccourcis dans le commandant de minuit ?

Existe-t-il un moyen d'écouter le processus ?