Ich habe einen Cron-Job, in den Protokolle geschrieben werden /tmp
. Ich möchte automatisch die ältesten Dateien löschen, wenn der freie Speicherplatz auf der Festplatte weniger als 1 GB beträgt.
Ich versuche es zu tun df -ah /tmp
, dann nimm die 2. Zeile, benutze cut
um die avail
Spalte zu bekommen . for
Löschen Sie dann in einer Schleife die Dateien, die älter als n Tage sind, so lange, -mtime
bis genügend freier Speicherplatz vorhanden ist.
Ich möchte dies wahrscheinlich als Cron-Job einrichten, der auch täglich ausgeführt wird.
linux
bash
bash-scripting
yasith
quelle
quelle
df -ah /tmp
, dann nehmen Sie die 2. Zeile, verwenden Siecut
, um die Spalte avail zu erhalten. Löschen Sie anschließend in einer for-Schleife die Dateien, die älter als n Tage sind, mit -mtime. Bis genügend freier Speicherplatz vorhanden ist./tmp
, was viel kleiner als 1G ist, verbleibenden freien Speicherplatz. Es ist wahrscheinlich eine bessere Idee, zu rennenapt-get autoremove && apt-get clean && apt-get autoclean
, um freien Speicherplatz wiederzugewinnen.tmpreaper
: Es tut genau das, wonach Sie suchen.Antworten:
Führen Sie anstelle von find -mtime ein ls -t aus, zum Beispiel:
Kommentar entfernen
rm -f $f
, damit es tatsächlich funktioniert ...Normalerweise würde ich die Dinge jedoch ein wenig anders machen. Ich würde meine Cron-Protokolle in / var / log ablegen und so etwas wie logrotate die Verwaltung des Festplattenspeichers übernehmen lassen. Alternativ dazu würde ich die Protokolle in einem separaten Unterverzeichnis wie / tmp / mycronjob / * ablegen und dann eine feste Anzahl von Tagen an Protokolldateien aufbewahren. Es ist nicht so flexibel wie das Überwachen des Speicherplatzes, aber es ist auch einfacher
find /tmp/mycronjob -mtime +30 -exec rm {} \;
und vorhersehbarer.quelle
ls
ist im Allgemeinen fehlerhaft .