Wie lösche ich automatisch /tmp-Ordner in Linux? Bash-Skript zur automatischen Datenträgerprotokollbereinigung
Veröffentlicht: 2014-03-13
Hier ist ein einfaches Skript, das eine automatische Datenträgerprotokollbereinigung für jede Linux-Umgebung durchführt. Sie müssen nur die korrekten CRUNCHIFY_TMP_DIRS angeben . Wenn auf einer Festplatte kein freier Speicherplatz mehr vorhanden ist, können alle Arten von Problemen auftreten.
Aber vorher wollen wir ein grundlegendes Verständnis einiger wichtiger Befehle haben.
Schritt 1)
Überprüfen Sie den Befehl df -H.
Verwenden Sie den Befehl df
, um Informationen über den gesamten Speicherplatz und den verfügbaren Speicherplatz in einem Dateisystem anzuzeigen.
Der Parameter FileSystem gibt den Namen des Geräts an, auf dem sich das Dateisystem befindet, das Verzeichnis, in dem das Dateisystem bereitgestellt ist, oder den relativen Pfadnamen eines Dateisystems.
Wenn Sie den Parameter FileSystem nicht angeben, zeigt der df command
Informationen für alle derzeit gemounteten Dateisysteme an. Wenn eine Datei oder ein Verzeichnis angegeben ist, zeigt der Befehl df Informationen für das Dateisystem an, in dem es sich befindet.
Ausgabe:
1 2 3 |
Filesystem Size Used Avail Capacity iused ifree % iused Mounted on / dev / disk0s2 499G 114G 385G 23 % 27868719 94059510 23 % / devfs 189k 189k 0B 100 % 640 0 100 % / dev |
Schritt 2)
Filtern Sie als Nächstes das Dateisystem heraus und ermitteln Sie den Prozentsatz des Speicherplatzes
1 |
df - H | grep - vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' |
Ausgabe:
1 2 |
23 % / dev / disk0s2 100 % devfs |
Daher möchten Sie manchmal programmgesteuert Dateien aus bestimmten Ordnern bereinigen, falls Ihnen der Speicherplatz ausgeht. In diesem Fall müssen Sie nur das folgende Skript ausführen und es kümmert sich darum, alle nicht verwendeten Dateien basierend auf den im Skript erwähnten Filterkriterien zu bereinigen. Es sendet auch eine E-Mail an den im Skript angegebenen Benutzer.
Ein weiteres muss gelesen werden:
- So führen Sie Windows/Mac-Befehle in JAVA aus und geben das Textergebnis zurück
Vollständiges Linux DiskCleanup-Skript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
#!/bin/bash # Diskclean-Linux.sh - Remove unused files from /tmp directories # @author: Crunchify.com # ------------- Here are Default Configuration -------------------- # CRUNCHIFY_TMP_DIRS - List of directories to search # DEFAULT_FILE_AGE - # days ago (rounded up) that file was last accessed # DEFAULT_LINK_AGE - # days ago (rounded up) that symlink was last accessed # DEFAULT_SOCK_AGE - # days ago (rounded up) that socket was last accessed CRUNCHIFY_TMP_DIRS = "/tmp /var/tmp /usr/src/tmp /mnt/tmp" DEFAULT_FILE_AGE =+ 2 DEFAULT_LINK_AGE =+ 2 DEFAULT_SOCK_AGE =+ 2 # Make EMPTYFILES true to delete zero-length files EMPTYFILES = false #EMPTYFILES=true cd / tmp / log "cleantmp.sh[$] - Begin cleaning tmp directories" echo "" echo "delete any tmp files that are more than 2 days old" / usr / bin / find $ CRUNCHIFY_TMP_DIRS \ - depth \ - type f - a - ctime $ DEFAULT_FILE_AGE \ - print - delete echo "" echo "delete any old tmp symlinks" / usr / bin / find $ CRUNCHIFY_TMP_DIRS \ - depth \ - type l - a - ctime $ DEFAULT_LINK_AGE \ - print - delete echo "" if / usr / bin / $ EMPTYFILES ; then echo "delete any empty files" / usr / bin / find $ CRUNCHIFY_TMP_DIRS \ - depth \ - type f - a - empty \ - print - delete fi echo "Delete any old Unix sockets" / usr / bin / find $ CRUNCHIFY_TMP_DIRS \ - depth \ - type s - a - ctime $ DEFAULT_SOCK_AGE - a - size 0 \ - print - delete echo "" echo "delete any empty directories (other than lost+found)" / usr / bin / find $ CRUNCHIFY_TMP_DIRS \ - depth - mindepth 1 \ - type d - a - empty - a ! - name 'lost+found' \ - print - delete echo "" / usr / bin / logger "cleantmp.sh[$] - Done cleaning tmp directories" # send out an email about diskcleanup action mail - s "Disk cleanup has been performed successfully." you @ email .com echo "" echo "Diskcleanup Script Successfully Executed" exit 0 |
Hoffe das hilft. Wenn Sie Fragen zu obigem Skript haben, lassen Sie es mich wissen. Anregungen sind herzlich willkommen. Das Skript funktioniert unter Linux und Mac OS X.

Möchten Sie das obige Skript every 3 days
ausführen? Verwenden Sie einfach den folgenden Cron-Zeitplan
Ausführliches Tutorial zum Setting up CronJobs
ist unterwegs. Bitte bleiben Sie dran.
1 |
0 0 */ 3 * * / opt / crunchify / crunchify_script . sh |