wie viel Zeit logrotate zwischen Postrotate und Komprimierung wartet

wie viel Zeit logrotate zwischen Postrotate und Komprimierung wartet

Ich schreibe eine Software und möchte Protokolldateien neu laden, wenn der Prozess ein SIGHUP von etwas wie logrotate erhält. Die Frage ist, wie viel Zeit die Anwendung verwenden kann, bevor logrotate mit dem Komprimieren der rotierten Protokolldatei beginnt?

Auf der Manpage und in allen Referenzen, die ich gefunden habe, steht nur, dass die Anwendung die Protokolle „sofort“ neu laden muss, aber es wird nicht gesagt, ob dies beispielsweise in 1 ms oder 1 Sekunde geschehen muss.

Antwort1

Um sicherzugehen: gar keine.

Logrotate geht davon aus, dass nach Abschluss des Postrotate-Befehls nichts mehr in die Protokolldatei geschrieben wird. Es gibt zwei Möglichkeiten, mit „das Schließen von Protokolldateien kann eine Weile dauern“ umzugehen:

  • Die Option von logrotate delaycompressverschiebt den Komprimierungsschritt bis zumnächstelogrotate-Aufruf. Auf diese Weise kann es genauso lange dauern wie der nächste logrotate-Lauf (obwohl das keine so gute Idee wäre).
  • Sie können ein Kommandozeilentool schreiben, das den Daemon anweist, die Logdatei zu schließen und erneut zu öffnen. Stellen Sie sicher, dass dieser Befehlnichtbeenden, bis der Daemon bestätigt hat, dass alle Logdateien geschlossen wurden (er muss nicht warten, bis sie wieder geöffnet wurden, obwohl das nicht schadet). Anschließend kann dieses Kommandozeilentool aus den postrotateStrophen von logrotate verwendet werden.

verwandte Informationen