Archiv verlassen und diese Seite im Standarddesign anzeigen : Script für log Dateien
Schmolleg
18-12-2004, 02:06
Hallo Leute ich wollte mir einen Script machen womit ich mal alle logs leeren kann die in /var/log/ sind aber wie muss ich den Script schreiben das auch in den Unterverzeichnissen in /var/log/ die logs geleert werden ?
for i in `ls /var/log/*`
do
echo "" > $i
done
Das bringts nur für die Dateien in /var/log
1. Kannst du die Dateien nicht einfach löschen?
2. find /var/log -type f anstatt ls
Schmolleg
18-12-2004, 12:23
Also alle löschen ist schlecht dann meckern doch die Progs die die logs brauchen rum und alle neu anlegen will ich auch nicht.
HangLoose
19-12-2004, 10:32
moin moin
ich kenne mich mit shellscripting nicht so gut aus, daher ein lösungsvorschlag mittels python ;)
#! /usr/bin/env python
import os
import sys
def getFileNames(path):
filelist = []
for root, dirs, files in os.walk(path):
for name in files:
if name.startswith('.'):
continue
else:
filelist.append(os.path.join(root,name))
return filelist
if __name__ == '__main__':
if len(sys.argv) != 2:
print 'usage: \n\n'+ str(sys.argv[0].split('/').pop()) + ' dirname'
else:
logfiles = getFileNames(sys.argv[1])
for each in logfiles:
print each
#os.popen('echo 0 > ' + each)
der teil mit echo 0 ist nicht getestet, hab keine lust mein logs zu leeren ;).
Gruß HL
Hans-Georg Normann
19-12-2004, 15:24
Wenn man mich fragt, viel zu viel Aufwand für eine simple Aufgabenstellung. Die Methode von Joghurt liefert doch schon alles
find /var/log -type f -exec cp /dev/null {} \;Das war's, zumindest was die Aufgabenstellung angeht.
Ich würde es trotzdem nicht machen, denn da gibt es auch die eine oder andere Datei, z. b. wtmp, welche nicht im Textformat vorliegt. Warum nimmst du nicht einfach etwas fertiges wie logrotate? Räumt periodisch auf und entsorgt auch die ganz alten klamotten und man weiß, dass es läuft.
Hans
Schmolleg
31-12-2004, 01:33
Ich würde nur gerne mit einem c++ Programm alle datei in /var/log/ leeren also das halt nur mit c++:
for i in `ls /var/log/*`
do
echo "" > $i
done
Hat jemand eine Idee wie ich das schreiben kann ?
peschmae
31-12-2004, 09:16
Wieso nicht logrotate? Das macht das viel besser und sinnvoller (ältere Logs werden erst gegzippt und dann mal gelöscht und das ganze von selber und periodisch).
Da hast du dann auch immer etwas logs herumstehen falls du die mal brauchen solltest.
MfG Peschmä
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.