Für einen Kollegen, der Ubuntu Netbook Remix auf einem Asus Netbook der erstern Stunde betreibt, habe ich vor ein paar Tagen ein Shellskript geschrieben, um die 4GB Solid-State-Disk von unnötigem Dateimüll frei zu halten.
Anschließend habe ich es für eine Bekannte, deren alte und kleine Festplatte auch langsam aber sicher am Überlaufen war noch einmal erweitert.
Da dieses Skript vielfach über das hinausgeht, was ich hier bislang in den Tutorien zur Bash besprochen habe (z.B. Variablen, Returncodes), habe ich diesen Beitrag auch nicht als Tutorium gekennzeichnet.
Da ich jedoch davon ausgehe, dass hier auch einige Leute mitlesen, die ihre ersten Schritte auf der Linux-Shell bereits hinter sich haben, möchte ich dieses Skript hier dennoch veröffentlichen. Vielleich hilft es ja dem einem oder der anderen noch weiter.
#!/bin/bash
#Copyright: Bjoern Manfred Kraus.
#Kontakt: train_of_thought[at]gmx.de
#Natürlich frei unter der GPL3.
#Mit diesem Skript sollen diverse Verzeichnisse von Dateileichen befreit
#werden, um dem Platzproblem zu begegnen. Wenn einzelne Abschnitte
#dieses Skripts für Ihr System keine Bedeutung haben sollten,
#kommentieren Sie bitte einfach die fraglichen Abschnitte einfach aus.
#Dieses Skript befindet sich noch in der Entwicklung. Wenn Sie gerne
#Ergänzungen sehen wollen, oder aber, wenn Sie
#Verbesserungsvorschläge haben, kontaktieren Sie mich bitte unter
#train_of_thought[at]gmx.de.#Zuweisung der Variablen um das Skript portierbar zu halten.
LOGDATEIEN='/var/log'
BROWSERCACHE='/home/Benutzer/Pfad/zum/Firefox/Cache'
TEMPDATEIEN='/tmp'
#Die folgende Variable ist für Widelands-Spieler von Interesse. Ansonsten einfach auskommentieren.
WIDELANDS='/home/Benutzer/Pfad/zu/den/Widelands/Spielaufzeichnungen'
#Die folgende Variable hat vor allem für Nutzer von KDE 3.5.x eine #Bedeutung. Ob es sowas auch bei KDE 4.x.x gibt??? Im Zweifel #einfach entsprechend auskommentieren...
KDE='/home/Benutzer/.kde/Pfad/zum/Cache'#Begrüßung und Rückmeldung, dass das Skript erfolgreich gestartet #wurde.
echo Hi das Skript $0 wurde erfolgreich gestartet.#Wechsel in das Verzeichnis der Widelands-Spieleaufzeichnungen.
echo $0 es wird nun zu dem Verzeichnis der Widelands-Spieleaufzeichnungen gewechselt.
cd $WIDELANDS &>/dev/null#Überprüfung ob der Wechsel erfolgreich war. Falls ja werden die #Spieleaufzeichnungen gelöscht. Falls nicht gibt es eine Fehlermeldung.
if [ $? = 0 ]
then
echo $0 es wurde erfolgreich zu dem Verzeichnis der Widelands-Spieleaufzeichnungen gewechselt. Dieses wird nun geleert.
#Löschen der Widelands-Spieleaufzeichnungen.
rm -rf ./* &>/dev/null
#Überprüfung ob das Löschen erfolgreich war. Falls nicht gibt es eine #Fehlermeldung.
if [ $? = 0 ]
then
echo $0 Das Löschen der Widelands-Spieleaufzeichnungen war erfolgreich.
else
echo $0 Die Widelands-Spieleaufzeichnungen konnten NICHT gelöscht werden. Wahrscheinlich war das Verzeichnis bereits leer. Eventuell fehlen Ihnen aber auch nur die nötigen Rechte.
fi
else
echo $0 Es konnte NICHT zu dem Verzeichnis der Widelands-Spieleaufzeichnungen gewechselt werden. Bitte überprüfen Sie, ob die Variable "WIDELANDS" korrekt gesetzt ist. Falls Sie Widelands gar nicht installiert haben, kommentieren Sie bitte den gesammten Abschnitt im Skript aus.
fi#Wechsel in das Verzeichnis der Logdateien.
cd $LOGDATEIEN &>/dev/null#Überprüfung, ob erfolgreich in das Verzeichnis gewechselt wurde. #Wenn dies erfolgreich war, werden die alten Logdateien gelöscht. Falls #nicht gibt es eine Fehlermeldung.
if [ $? = 0 ]
then
echo $0 Es wurde erfolgreich zu dem Verzeichnis $LOGDATEIEN gewechselt.
#Die alten Logdateien werden in dem Verzeichnis gelöscht.
echo $0 Die alten Logdateien werden nun gelöscht.
rm -f ./*.gz &>/dev/null
#Überprüfung ob das Löschen erfolgreich war.
if [ $? = 0 ]
then
echo $0 Die alten Logdateien im Verzeichnis $LOGDATEIEN wurden erfolgreich gelöscht.
else
echo $0 Die alten Logdateien im Verzeichnis $LOGDATEIEN konnten nicht gelöscht werden. Wahrscheinlich existieren dort zur Zeit keine. Oder haben Sie einfach nur vergessen, dieses Skript mit Rootrechten auszuführen?
fi
else
echo $0 In das Verzeichnis $LOGDATEIEN konnte nicht gewechselt werden. Wahrscheinlich existiert es nicht.
fi#Wechsel in den Browser-Cache (Firefox in der Rgel) um diesen #Anschließend zu leeren.
echo $0 Es wird nun zum Browser-Cache gewechselt, um diesen zu leeren.
cd $BROWSERCACHE &>/dev/null
#Überprüfung ob der Wechsel erfolgreich war.
if [ $? = 0 ]
then
echo $0 es wurde erfolgreich zum Browser-Cache gewechselt. Dieser wird nun geleert.
#Löschen des gesammten Inhalts des Browser-Cache
rm -rf ./* &>/dev/null
#Überprüfung ob das Löschen erfolgreich war.
if [ $? = 0 ]
then
echo $0 Das Leeren des Browser-Cache war erfolgreich.
else
echo $0 Der Browser-Cache konnte nicht geleert werden. Wahrscheinlich ist dieser bereits leer.
fi
else
echo $0 es konnte NICHT zum Browser-Cache gewechselt werden. Bitte überprüfen Sie, ob die Variable "BOWSERCACHE" im Skript korrekt gesetzt ist und passen Sie diese gegebenenfalls an!!!
fi#Wechsel in den Cache von KDE.
cd $KDE &>/dev/null#Überprüfung ob der Wechsel erfolgreich war. Falls ja wird der Cache #gellert. Falls nein gibt es eine Fehlermeldung.
if [ $? = 0 ]
then
echo $0 es wurde erfolgreich zum Cache von KDE gewechselt. Dieser wird nun geleert.
#Löschen der Dateien im Cache von KDE.
rm -rf ./* &>/dev/null
#Überprüfung ob das Löschen erfolgreich war. Falls nicht gibt es eine #entsprechende Fehlermeldung.
if [ $? = 0 ]
then
echo $0 Der Cache von KDE wurde erfolgreich gelöscht.
else
echo $0 Der Cache von KDE konnte NICHT gelöscht werden. Wahrscheinlich war dieser bereits leer. Eventuell hat dieser Skript-Abschnitt für Sie aber auch einfach keine Bedeutung.
In diesem Fall kommentieren Sie diesen Abschnitt bitte aus.
fi
else
echo $0 es konnte NICHT zum Cache von KDE gewechselt werden. Bitte überprüfen Sie, ob die Variable KDE korrekt gesetzt ist. Sollte dieser Abschnitt für Sie keine Relevanz haben, kommentieren Sie ihn bitte aus...
fi#Als Nächstes sollen noch die temporären Dateien gelöscht werden. #Hierzu wird in das Verzeichnis /tmp gewechselt
echo $0 Es werden nun noch die temporären Dateien entfernt. Hierzu wird zu dem Verzeichnis $TEMPDATEIEN gewechselt.
cd $TEMPDATEIEN &>/dev/null
#Überprüfung ob erfolgreich in das Vereichnis /tmp gewechselt wurde. #Falls ja wird dort der gesammte Inhalt gelöscht.
if [ $? = 0 ]
then
echo $0 Es wurde erfolgreich zu dem Verzeichnis $TEMPDATEIEN gewechselt. Dessen Inhalt wird nun gelöscht.
#Die temporären Dateien werden gelöscht.
rm -rf ./* &>/dev/null
#Es wird überprüft, ob das Löschen erfolgreich war.
if [ $? = 0 ]
then
echo $0 Das Löschen der temporären Dateien im Verzeichnis $TEMPDATEIEN war erfolgreich.
else
echo $0 Das Löschen der temporären Dateien im Verzeichnis $TEMPDATEIEN war NICHT erfolgreich. Entweder ist es bereits leer, oder Sie haben nicht die nötigen Rechte. Starten Sie dieses Skript im Zweifel nochmal als ROOT.
fi
else
echo $0 Es konnte nicht zu dem Verzeichnis $TEMPDATEIEN gewechselt werden. Bitte überprüfen Sie, ob die Variable "TEMPDATEIEN" im Skript korrekt gesetzt ist und passen es gegebenennfalls entsprechend an.
fi#Abschließende Bemerkungen... Diese haben keine echte Funktion #mehr...
echo $0 Danke für die Benutzung von $0. Ihr System ist nun von unnötigen Dateileichen befreit. Und denken Sie immer daran, Windows SUCKS und Linux RULES!!!
Wie man sieht, arbeitet das Skript mit if-then-else-Schleifen und mit den Returncodes der Kommandos, sowie diversen Variablen.
Damit dieses Skript korrekt funktionieren kann, muss es mit Root-Rechten laufen. Insofern weise ich hier noch ausdrücklich darauf hin, dass eine Benutzung auf eigene Gefahr erfolgt.
Solltet ihr Verbesserungsvorschläge und/oder Ergänzungswünsche haben, dann kontaktiert mich doch bitte per Mail. Werde die ganze Sache auf jeden Fall demnächst noch etwas weiter entwickeln.
Abschließend sei noch darauf hingewiesen, dass dieses Skript nur ausgeführt werden sollte, bevor der Rechner ausgeschaltet wird.