wie kann ich eine lange Textdatei, die im Appendmodus in Produktion ist, während des Betriebes vorne abschneiden, ohne dass die hinzufügenden Programme davon beeinträchtigt werden?
meines Wissens gar nicht. Aber wenn du nochmal von vorne anfangen willst und kannst, wäre das ein Fall für den Einsatz von logrotate.
Jepp! Oder: @TS, nimmt doch etwas, was das kann -> Datenbank. So lange die „hinzufügenden Programme“ in ein PIPE loggen können sollte das auch kein Problem sein.
Dazu reicht z.B. ein laufendes MySQL und ein als Dienst etabliertes Schell-Skript, welches einmal die Verbindung zur Datenbank aufbaut, den Logstring mit read str;
entgegennimmt und nach Entschärfung den Insert macht.
Und wie machen das Spooldateien?
Die Dateien machen da gar nichts. Die werden von genau einem Programm oder einer genau definierten und „sich aus der Kinderstube kennenden“ Gruppe von Programmen behandelt, die zwecks TOCTTOU-Vermeidung miteinander über den Staus der Spooldateien kommunizieren, und die Bestellungen der anderen Programme entgegennehmen und deren Wünsche (hoffentlich) erfüllen.
Und wie macht das logrotate?
Einfache Antwort:
Wie in /etc/logrotate.conf und /etc/logrotate.d/* ersichtlich. Der Apache wird z.B. neu geladen. Grund: der benutzt (wohl aus Performancegründen ) nicht den üblichen Syslogmechanismus (e.g. rsyslogd), also einen Pipe nach logger -t facility
, sondern loggt direkt.
Würde der Apache rsyslogd bz. journald benutzen (Man kann das durchaus konfigurieren), dann wäre rsyslogd dafür zuständig, den Rest mit logrotate abzuhandeln.
Andererseits hat der Apache einen eigenen Logrotierer. Der aber scheint bei den Linux-Distributoren unbeliebt zu sein - kann man verstehen, der braucht dann einen eigenen Cronjob und weicht also vom üblichen Mechanismus ab.