Hallo.

> Unter Linux ist es so, dass programme auf inodes schreiben. wenn du die
datei wegkopierst, dann ist stimmt die inode nicht mehr, die der apache noch
hat. selbst wenn du eine neue logdatei selbst anlegen würdest, könnte der
apache ohne restart nicht auf die datei schreiben, weil die inode nicht
stimmt.
> 
> deshalb verfährst du am besten so:
> 
> mv logfile logfile_rotate
> apachectl graceful
> [weitere verarbeitung]
> 
> das logfile wegmoven und ein graceful machen geht sehr schnell.
> wenn du 100% sicher sein willst, auch nciht ein logentry zu verlieren,
dann kannst du - unter linux - das access-log als pipe-log anlegen und einen
buffer dazwischen schalten.

Das dazwischenschalten ist nicht nötig.
Durch das mv wird nur der Dateiname geändert, der inode bleibt gleich.
Daher kann apache weiterschreiben, obwohl der Dateiname geändert wurde.

Durch den graceful Restart wird eine neue Datei angelegt und apache loggt
unmittelbar in das neue file.
Wo sollte etwas verloren gehen?

Unter Windows funktioniert es übrigens ebenso. move statt mv...
Dort heißt es halt nicht inode sondern file-handle...

Aber es funktioniert ebenso.

Gruß,
  Steffen

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Antwort per Email an