Re: /kernel: handle_workitem_freeblocks

From: Christian Lackas <lackas(at)mail.desy.de>
Date: Tue, 21 May 2002 21:44:10 +0200

* Oliver Fromme <olli(at)secnetix.de> [020521 20:28]:

Hallo Oliver, Stefan,

> > > > $ echo "" > ipmon.log

gleiches erreicht man auch mit

    echo > ipmon.log

> Wenn ein Prozeß eine Datei geöffnet hält (z.B. eine Log-
> Datei), dann ist es ihm relativ egal, was andere Prozesse
> mit dieser Datei anstellen. Wenn er einen open()-syscall
> macht, erhält er einen Filehandle für die Datei, der ver-
> schiedene Eigenschaften für den Zugriff auf diese Datei
> enthält, z.B. den inode die Position im Filesystem und den
> Filepointer (d.h. bei welchem Offset in der Datei der näch-
> ste Schreibzugriff passiert).

Wenn die Datei mit O_APPEND geöffnet wird (was bei Logfiles ja nicht
unüblich ist), dann kann man Logdateien mit obiger Methode eigentlich
schon leeren. Das Dateiende wird zwischen allen Filehandlen geteilt (und
vor jedem Schreiben wird der Schreibzeiger automatisch auf das Dateiende
gesetzt).

> Richtig wird es so gemacht, daß man die Datei umbenennt
> (z.B. »mv bla.log bla.log.0«) und dann dafür sorgt, daß der
> Prozeß sie schließt und neu öffnet. Manche Programme tun
> dies, wenn man ihnen ein SIGHUP schickt, ansonsten muß man
> sie halt killen und neustarten.

Bei Servern, die sowas nicht unterstützen (und die man nicht beenden
möchten) kopiert man die Datei und trunkiert sie dann. Dabei können
natürlich ein paar Einträge (zwischen Kopieren und Trunkieren) verloren
gehen. Deshalb wird im Allgemeinen davon abgeraten. Wer seine Daten aber
einfach löschen will, für den ist "echo > file" eigentlich ausreichend.

Gruß
 Christian

-- 
Politiker: von griech. 'poly' und engl. 'take': er nimmt gern viel.
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 21 May 2002 - 21:44:46 CEST

search this site