Disk-Space usage

N

nuke

hi leute
ich hab noch nicht viel mit der bash gearbeitet und komme deshalb nicht weiter (respektive weiss nicht, wo ich anfangen soll). ich möchte gerne ein script schreiben, dass mir ein bestimmtes verzeichniss überwacht und falls ein unterverzeichnis darin eine ebenfalls bestimmte grösse überschreitet, soll es mich per mail periodisch daran erinnern. nicht viel also.

ich hab mir das so überlegt:
mit dem befehl "du --max-depth=1 -Lh /home/martin" kann ich eine liste ausgeben, auf der alle unterverzeichnisse in /home/martin aufgelistet werden (inkl. grösse des entsprechenden verzeichnises). ein script soll nun diesen befehl anwenden und auswerten und im falle einer überschreitung der vorgegebenen grösse soll das script per mail das betreffende verzeichnis per mail an mich schicken (also natürlich nicht das verzeichnis, sondern nur eine meldung, welche verzeichnise zu gross sind und wie viel zu gross sie sind. das script kann man dann via cronjob aufrufen (z.b. täglich). naja weiter bin ich mit überlegen leider noch nicht... also ich weiss einfach nicht, was es für möglichkeiten gibt und was am schlausten ist und vorallem wie ich das alles eigentlich angehen sollte.

ich suche jetzt nicht jemanden, der mir das script schreibt, das möchte ich schon gerne selber machen. jedoch bin ich um jeden input froh, weil ich nicht weiss, was ich alles benötige und wie ich das angehen kann/soll...

danke schon mal

martin
 
Hallo nuke

Ich würde erstmal das 'h' in "du --max-depth=1 -Lh /home/martin" durch ein 'k' ersetzen, also "du --max-depth=1 -Lk /home/martin", dann hast du einheitliche und Vergleichbare Zahlen.

Dann bekommst du als Resultat ja eine schöne Liste, und vorläufig interessiert dich ja nur die erste Spalte.
An diese kommst du z.B mit 'cut' heran (man cut, http://man.cx/cut).

Ist das für einen ersten Denkanstoss genug?

Gruss
d22
 
hmm hab da mit cut mal ein bisschen herumprobiert. ich sehe aber nicht genau, warum ich nur die 1. zeile benötige, also die grösse und den pfad nicht. schliesslich will ich ja später diesen pfad auch ausgeben, falls ein verzeichnis zu gross geworden ist.

edit: ah ok, ich glaub ich raffs jetzt. mit cut krieg ich ne liste der gesammten grössen und die kann ich mit einer schlaufe überprüfen. falls ein eintrag zu gross ist als definiert kann ich ja den "du" befehl nochmals ausführen mit "grep" auf das entsprechende verzeichnis?!?
 
Du benötigst nicht die erste Zeile, sondern die erste Spalte. Und ausserdem steht da ja auch "vorläufig"...

Du musst ja erstmal die Zahl die dir 'du' ausgibt mit einem Richtwert vergleichen, und da ist dir der Name des Verzeichnisses "im Weg"...

Und was man auch noch anmerken sollte, es gibt bestimmt 'tausend' Wege dieses Problem zu lösen....

Gruss
d22
 
Da is doch awk grad das richtige, ne? ^^
Oder python :)
 
was ist awk? noch nie gehört.. und ne ihr sollt es nicht machen. ich hab ja bereits geschrieben, dass ich blutiger anfänger bin und es selber hinkriegen will. ich weiss nur nicht immer, welchen schritt ich als nächstes machen sollte.

wie kann man einen output weiterverwenden? ich hab die liste von cut, sieht so aus:
4589276
16
4589296
und möchte die jetzt gerne mit einer for-schlaufe überprüfen, aber wie krieg ich die nötigen daten in diese schlaufe?
 
Hallo
Du kannst auch awk nehmen, sei dir aber bewusst dass das so ziemlich das langsamste Mittel sein wird.

Du kannst einfach die Ausgabe deiner Liste an read verfüttern, und dort die einzelnen Werte auswerten.
Code:
max=200;
du --max-depth=1 -Lk /home/wolle/| while read size path;
 do
 if [ $size -gt $max ]; 
then
 echo "Der Pfad $path ist groeszer als $max";
###hier das mailen, bekommst du selber hin
fi;
done
Bevor du awk aufgerufen hast, ist das schon fertig. ;)
Gruß Wolfgang
 

Ähnliche Themen

EIn Programm ausführen

script mit endung .sh&!!!

Samba als PDC

eigenes shell-script zum erstellen von benutzern

Mittels truecrypt /root verschlüsseln

Zurück
Oben