Shell script zum löschen von Dateien, wenn die Festplatte voll ist
Ich Schreibe ein kleines Skript, um freien Platz auf meinem linux-Alltag über CRON, wenn das cache-Verzeichnis wächst zu groß.
Da bin ich wirklich noch grün hinter bash-Skripting, ich brauche ein bisschen Hilfe von Euch linux gurus da draußen.
Hier ist im Grunde die Logik (pseudo-code)
if ( Drive Space Left < 5GB )
{
change directory to '/home/user/lotsa_cache_files/'
if ( current working directory = '/home/user/lotsa_cache_files/')
{
delete files in /home/user/lotsa_cache_files/
}
}
Immer Speicherplatz übrig
Ich planen, um die Festplatte Speicherplatz von '/dev/sda5 " - Befehl.
Wenn gibt den folgenden Wert, um mich für deine info :
Filesystem 1K-blocks Used Available Use% Mounted on<br>
/dev/sda5 225981844 202987200 11330252 95% /
So ein wenig regex notwendig sein könnte, um die '11330252' aus der zurückgegebene Wert
Ein wenig paranoia
'If ( current working directory = /home/user/lotsa_cache_files/)" - Teil ist nur ein Abwehrmechanismus für die paranoia in mir. Ich möchte sicherstellen, dass ich bin in der Tat in '/home/user/lotsa_cache_files/', bevor ich gehen mit dem Befehl "löschen", was potentiell destruktiv, wenn das aktuelle Arbeitsverzeichnis ist nicht vorhanden für einige Grund.
Löschen von Dateien
Das löschen von Dateien erfolgt mit dem Befehl unten statt der üblichen rm -f:
find . -name "*" -print | xargs rm
Dies ist aufgrund der inhärenten Unfähigkeit von linux-Systemen zu 'rm' ein Verzeichnis, wenn es zu viele Dateien enthält, wie ich gelernt habe, in der Vergangenheit.
- "inhärenten Unfähigkeit von linux-Systemen zu 'rm' ein Verzeichnis, wenn es zu viele Dateien enthält" Macht das auch bedeuten, "rm -rf"?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur ein weiterer Vorschlag (Kommentare innerhalb des Codes):
Rufen Sie das Skript aus der crontab zu tun planmäßigen Reinigungen
-delete
Flagge statt-exec rm -f {} \;
. Auch erwägen-xdev
als die erste fahne zu bleiben, im gleichen Dateisystem.Ich würde es so machen:
find
Befehl und nicht verwenden, xargs, da kann es gefährlich werden.Hier ist das Skript, das ich verwenden, um löschen Sie alte Dateien in einem Verzeichnis, um Speicherplatz...
cd $DIR
so ist es nicht.Zur Erkennung der Besetzung eines Dateisystems, benutze ich dieses :
was mir die Besetzung Prozentsatz des Dateisystems, auf diese Weise brauche ich nicht zu berechnen 🙂
Wenn du bash benutzt, können Sie die pushd/popd Betrieb zu wechseln und sicher sein.