# Server/Gnome "Log Dateien werden nicht mehr beschrieben"

## lituxer

Hallo

Vielleicht kann mir mal jemand weiterhelfen?

Im Nautilus logge ich mich per sftp auf dem Server ein, was anstandslos funktioniert.

Die Logdatei schaue ich mir dann mit dem Texteditor (gedit) an. Danach lösche ich den Inhalt und speichere die Datei. Was auch klappt.

Nur danach werden die Logdateien nicht mehr beschrieben. Erst wenn ich den Apache restarte klappt es wieder.

Das Problem tritt nur unter Gnome auf, wenn ich es von KDE (Konqueror) mit Kwriter mache, funktioniert es ohne restart von Apache.

Meine Vermutung ist, das gedit irgendwas beim speichern hinterlässt, der das schreiben der Logs blockiert.  Aber was?

Ich würde es gerne weiter mit meinem Hauptsystem Gnome machen, zumal  KDE 4.2 RC nur ein Testsystem ist.

----------

## mrsteven

Das hängt wohl mit der Art wie der GNOME-Editor Dateien speichert zusammen. Unter Unix kann es nämlich unter Umständen passieren, dass eine Datei zwar existiert aber unter keinem Dateinamen mehr angesprochen werden kann. Das passiert z.B. wenn eine Datei noch geöffnet ist und man sie währenddessen mit rm entfernt. Erst wenn kein Zugriff mehr erfolgt wird die Datei endgültig gelöscht (bzw. die dafür reservierten Blöcke und das I-Node freigegeben).

Was hier wohl passiert ist folgendes:

Apache öffnet sein Logfile.

Du öffnest im Editor die Datei. Wahrscheinlich wird sie nur gelesen.

Du editierst die Datei im RAM und gibst anschließend dem Editor den Befehl zum Speichern.

Der Editor löscht die alte Logdatei, bzw. er entfernt eigentlich nur den Dateieintrag aus dem Verzeichnis. Apache schreibt weiter in die alte Datei, auf die sonst aber kein Programm mehr Zugriff hat. Sobald Apache sein Log schließt wird dieses automatisch gelöscht. Der Editor schreibt nun eine neue Datei und legt sie unter dem gleichen Namen ab wie die alte. Wenn du wieder über den Dateinamen auf das Log zugreifst, dann siehst du die neue, leere Version und nicht die, in die Apache schreibt.

Wird der Apache neu gestartet öffnet dieser über den Dateinamen ebenfalls die neue Datei.

Der Editor von KDE scheint hier wohl etwas anders zu funktionieren. Manchmal hilft es SIGHUP an den entsprechenden Prozess (in dem Fall Apache) zu senden, ich habe es aber nicht ausprobiert. Prinzipiell bietet sich für solche Aufgaben das Tool logrotate an.

----------

## lituxer

 *mrsteven wrote:*   

> 
> 
> Der Editor löscht die alte Logdatei, bzw. er entfernt eigentlich nur den Dateieintrag aus dem Verzeichnis. Apache schreibt weiter in die alte Datei, auf die sonst aber kein Programm mehr Zugriff hat. Sobald Apache sein Log schließt wird dieses automatisch gelöscht. Der Editor schreibt nun eine neue Datei und legt sie unter dem gleichen Namen ab wie die alte. Wenn du wieder über den Dateinamen auf das Log zugreifst, dann siehst du die neue, leere Version und nicht die, in die Apache schreibt.
> 
> 

 

Genau das ist das Problem. 

Ich habe das mal mit der error-log von Apache ausprobiert. Er schreibt wirklich nicht in die bereinigte Datei. 

Schreiben tut Apache, nur leg er die Datei dann gepackt ab. Schon merkwürdig das ganze.

Da ich es wissen wollte, habe ich mir auf Gnome mal kwrite installiert, ist der selbe effect. Also scheint es ja nicht am Editor zuliegen?

Oder liegt es daran, das ich aus KDE mit fish:// und unter Gnome mit sftp:// auf dem Server zugreife? Was ja eigentlich nicht sein kann.

Die Idee mit dem SIGHUP Signal hatte ich auch schon, zumal er Prozesse zum erneuten Einlesen ihrer Konfigurationsdateien bewegt.

Ich bin mir aber nicht sicher, wie der Apache darauf reagiert. Im Prinzip kann ich den Apache dann auch gleich neustarten. 

 *Quote:*   

> Prinzipiell bietet sich für solche Aufgaben das Tool logrotate an.

 

Dazu habe ich mal Tante Google befragt. Da soll es aber doch einige Probleme mit logrotate und den Apache geben.

Man möge mich berichtigen, da ich dieses Tool noch nicht benutzt habe.

Auf jedenfall Danke ich Dir für die ausführliche Beschreibung.

----------

## Max Steel

Statt SIGHUP könnte er fürs reloaden auch /etc/init.d/apache2 reload verwenden.

Aber ich vermute das du um ein restart oder zumindest reload nicht groß drumherum kommen wirst.

----------

## lituxer

 *Max Steel wrote:*   

> 
> 
> Aber ich vermute das du um ein restart oder zumindest reload nicht groß drumherum kommen wirst.

 

Die Befürchtung habe ich leider auch. Ist im Prinzip ja auch kein Problem, den Apache danach neuzustarten.

Es war halt sehr praktisch mit KDE. 

Nur möchte ich das Testsystem nicht dafür benutzen, zumal ich mit KDE eh schon genug Probleme habe.

Wer weiss, was dann noch alles passiert.

----------

