Daten werden an eine Datei angehängt und wenn ihr Wert 200 MB überschreitet, soll eine neue Datei erstellt werden

Daten werden an eine Datei angehängt und wenn ihr Wert 200 MB überschreitet, soll eine neue Datei erstellt werden

Ich habe ein Skript geschrieben, das ps -efalle 5 Minuten ausgeführt wird und dessen Ausgabe an eine Datei angehängt wird. Ich möchte, dass eine neue Datei erstellt wird, wenn die aktuelle Dateigröße 200 MB überschreitet. Kann mir jemand dabei helfen?

Antwort1

Sie könnten Ihrem Skript so etwas hinzufügen, bevor Sie die Datei anhängen.

FILE="your-file"
if test $(( $(stat  -c"%s" "$FILE") )) -ge "$(( 200*1024*1024 ))"; then
    mv "$FILE" "$FILE-$(date +"%FT%T")"
fi

Antwort2

Schauen Sie sich das logrotateProgramm an. Erstellen Sie zunächst eine Konfigurationsdatei, beispielsweise /home/john/logrotate/ps.conf, mit folgendem Inhalt: (vorausgesetzt, Sie speichern Ihre psAusgabe in /home/john/logrotate/log/ps.log)

/home/john/logrotate/log/ps.log {
    size = 200MB
    missingok
    notifempty
}

Anschließend können Sie eine Crontab erstellen, die ausgeführt werden soll /usr/bin/logrotate /home/john/logrotate/ps.conf. SieheMannfür weitere Optionen, beispielsweise Komprimierung.

verwandte Informationen