Log-Files leeren

Fireball22

Registered User
Hallo,
ich habe ein paar verschiedene Server auf meinem Suse Linux 9.3 laufen, die so ziemlich viel log-Files produzieren.

Diese würde ich gerne mit einem Crontab regelmäßig leeren lassen.
Ich habe mir schon gedacht, dass ich einfach die Datei lösche, aber dann findet der Prozess die Datei nicht mehr und kann somit keine Logs mehr schreiben.

Was mir lieber wäre, wäre erst die Datei zu löschen und dann die Datei wieder anzulegen, also ungefähr so:

Code:
rm file.log && touch file.log

Nur möchte ich gerne mit ";" mehrere Anweisungen in einen Crontab verschachteln und das wäre ein bisschen lang, gibt's da denn nicht auch eine Möglichkeit, mit einem Kommando beides zu lösen?

Fireball22
 
Ich habe mir jetzt mal im Internet einige Beschreibungen angeschaut und leider muss ich sagen, dass das ganze nicht wirklich funktioniert.

Meine /etc/logrotate.conf sieht folgendermaßen aus:

Code:
# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# uncomment these to switch compression to bzip2
#compresscmd /usr/bin/bzip2
#uncompresscmd /usr/bin/bunzip2

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp -- we'll rotate them here
#/var/log/wtmp {
#    monthly
#    create 0664 root utmp
#    rotate 1
#}

# system-specific logs may be also be configured here.

#/home/shoutcast/shoutcast-transcoder/sc_trans.log
/root/testfile.log
{
#weekly
daily
rotate 0
missingok
size=1M
#size=2M
compress
}

Normalerweise müsste das ganze doch dann ohne weiteres zutun von mir diese Logfile geleert werden, oder?

Was kann ich machen, dass das ganze läuft?

Fireball22
 
Also eigentlich sollte ja die Datei testfile.log geleert werden, aber leider wird sie das nicht.
Sie hat eine Größe von 1,43 MB.

Fireball22
 
Hallo,

startest du Logrotate auch richtig?
Das ist eine "nicht nette Frage" ich weiss, aber gerade das wird oft Falsch gemacht.

Code:
logrotate /pfad/zum/Configfile/logrotate.conf

Viele geben nicht den Pfad zum Configfile an, sondern zu ihren Logdateien.
Deshalb die Frage.
 
Vielen Dank, jetzt funktioniert das ganze!

Am Anfang habe ich mich schon gefragt welchen Sinn die Angabe der Config-File hat, wenn der Prozess sowieso als Daemon läuft, aber da liege ich wohl fehl am Platz wenn ich sage "Daemon".

Und dazu haben mich dann auch noch die Zeitangaben in der Config gewundert, aber jetzt weiß ich ja womit das zu tun hat.

Eine Frage hätte ich da jetzt aber noch:
Lässt sich das ganze nur mit Root-Rechten per Crontab regelmäßig ausführen, oder kann man das auch als normaler User mit eingeschränkten Rechten um keine Sicherheitsrisiken einzugehen.

Fireball22
 
Logrotate braucht root-Rechte. /var/log sollte bei Dir nur dem User root zugänglich sein. Alternativ könntest Du über eine Lösung mit sudo nachdenken.
 
Ja genau, das stimmt!

Dann werde ich doch direkt mal schauen ob sich das irgendwie mit sudo abriegeln lässt...

Vielen Dank für eure Hilfe!

Fireball22
 
Back
Top