Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Shell script zwecks Filesystem analyse

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
bloob

Shell script zwecks Filesystem analyse

Beitrag von bloob »

Hallo

ich habe einige Probleme bei meinem Script.

Auf meinem Server laufen oft die FIlesysteme voll,Um dann einen Produktionsstillstand zu vermeiden würde ich gerne ein Script schreiben dass mir:
- per df- k herausfindent welche filesysteme voll sind.
- mir dann denn vollständigen Pfad und dateigrößen von mehr als 30MB und das zugriffs bzw. erstelldatum nicht älter als 24h ist, auszugeben..

da im scripteln noch nicht so besonders Fit bin, bitte ich um Hilfe, wie ich am besten an diese Sache herangehe...

besten Dank schonmal im Vorraus!!!
Gast

Beitrag von Gast »

du wirst aber sehr viele Daten finden die größer als 30mb sind....
so viel sinn wird das nicht machen.

davon abgesehen wird es sehr viel performance in Anspruch nehemen wenn du z.b. ein

Code: Alles auswählen

 find / - name core  
laufen lässt...

Meine Erfahrung ist die, dass es immer der beste Weg ist, immer "von Hand" nach fehrerhatten daten zu suchen. Dann kann auch nichts passieren wenn Du irgendwas automatisiert gelöscht haben willst...
jado
Member
Member
Beiträge: 170
Registriert: 4. Mär 2004, 11:00
Wohnort: Hamburg

Beitrag von jado »

Mit welcher Skriptsprache programmierst du
und wie weit bist du denn mit deinem Skript?
bloob

Beitrag von bloob »

Ich versuche mich mit dem ganz normalen Shell scripting. ( #!/bin/ksh) 8)

hab noch nicht besonders viel zusammen. Mein Problem ist im Moment, dass ich mit via df das entsprechende File system grepen kann, aber ich keine möglichkeit habe mir eine Liste des Systems (mit allen directories und supdirectories) anzeigen zu lassen. Gibt es überhaut einen solchen Befehl?

Wenn erst einmal die Fillist hätte könnte ich ja nach entsprechenden größen greppen lassen....

oder gehe ich das Problem schon ganz falsch an.... (wie gesagt, bin absoluter anfänger im bereich scripting...) :oops:
Benutzeravatar
wenf
Hacker
Hacker
Beiträge: 422
Registriert: 8. Mär 2004, 11:23
Wohnort: ÖSI-Land
Kontaktdaten:

Re: Shell script zwecks Filesystem analyse

Beitrag von wenf »

bloob hat geschrieben:Hallo
- mir dann denn vollständigen Pfad und dateigrößen von mehr als 30MB und das zugriffs bzw. erstelldatum nicht älter als 24h ist, auszugeben..
schon mal
man find
versucht ?

Code: Alles auswählen

find /home/user/ -size +30000k -mtime +30 -print
sucht im Ordner /home/user (mit Unterordner) nach dateien, welche größer als 30000kByte und älter als 30 Tage alt ist.
-print gibt einfach alle gefundenen Dateien mit Pfad zeilenweise aus.

das einzige Problem das jetzt noch besteht, ist das Zugriffsdatum - da muß ich noch grübeln ob und wenn, wie das geht
jado
Member
Member
Beiträge: 170
Registriert: 4. Mär 2004, 11:00
Wohnort: Hamburg

Beitrag von jado »

OK, das überlastete Filesystem/Partition kannst du also schon selektieren.

Mit "/usr/bin/du" kannst du dir die Nutzung von Verzeichnissen ausgeben lassen,
und mit "/usr/bin/find <start-verzeichnis> -exec ls -l {} \;" die einzelnen Dateien.

War es das, wonach du gesucht hast??
bloob

Beitrag von bloob »

suuuuper klasse...

das ist ablosut genau das was ich gesucht habe!!

Danke!!

das mit "exec" ist ja spitze... lässt sich auf alle befehle anwenden?
jado
Member
Member
Beiträge: 170
Registriert: 4. Mär 2004, 11:00
Wohnort: Hamburg

Beitrag von jado »

auf alle befehle?? darauf möcht ich mich nicht festnageln lassen...
aber auf die meisten ;o)
bloob

Beitrag von bloob »

@ wenf
Code: find /home/user/ -size +30000k -mtime +1 -print

Code: Alles auswählen

mtime +1
gibt mir alle Daten aus die neuer als ein tag und gröer als 30MB sind....


thx to jado und wenf;
Damit habe ich die Lösung meines Probelms gefunden!
bloob

Beitrag von bloob »

mist; es muß natürlich minus heissen:

Code: Alles auswählen

 find /home/user/ -size +30000k -mtime -1 -print 
mtime -1 gibt alle daten neuer als ein tag aus
Loci

Beitrag von Loci »

lässt sich auf alle befehle anwenden?
ist nicht korrekt, du kannst an dieser stelle keine dateien löschen... der befehl rm funktioniert mit find nicht

stattdessen kannst du aber folgendes machen wenn du die direkt löschen willst:

Code: Alles auswählen

find /home/user/ -size +30000k -mtime -30 -print | rm -
mit dem - sagst du rm er soll seine argumente aus der pipe nehmen, sollte an sich funktionieren, wenn nicht einfach noch mal melden
bloob

Beitrag von bloob »

naja ist ja doch auch bissl gefährlich wenn ich Dateinen einfach so löschen lasse.
Im Moment hab ich´s so gemacht, dass ich mir alle "großen" dateinen als ll in eine Liste erstellen lasse und dann selber mit dem editor die noch benötigten Daten lösche.
Der rest wird dann via script gelöscht.
for i in 'cat list'
do
rm
exit

und fertig...
sirzero
Newbie
Newbie
Beiträge: 3
Registriert: 25. Apr 2005, 10:30
Kontaktdaten:

Beitrag von sirzero »

Hi,

ich bin neu und über google auf diesen Thread gestossen.

Also ich hab vom Prinzip her ein ganz ähnliches Problem. Ich soll nen Script oder nen Programm schreiben was sämtliche Dateien auf unserem Fileserver auflistet (Dateiname, Dateityp, Dateigröße, CHMOD-Status, wann zu letzt angefasst, wem gehört sie, Pfad).

So könnte man ja alles in Form von nem Shell-Script schreiben mit den entsprechenden befehlen.
Nunwurde aber in diesem Thread auch schon erwähnt dass das sehr viel Performance in Anspruch nimmt und wenn ich mir überlege bei einem Terrabyte Daten, wielang da wohl nen find dauern wird.

Ja nun würde mich interessieren, ob nicht vielleicht voneuch jemand eine bessere Idee hat wie dieses Problem lösen könnte?

Ich hab mir vielleicht überlegt wirklich das komplette Filesystem einmal einlesen und vielleicht in eine Datenbank zu schreiben womit man dann vielleicht weiterarbeiten kann? Der Gedanke kam mir, da ja der Locate Befehl ja eigentlich auch innerhalb einer Datenbank nach dem File sucht und es daher relativ schnell ist oder täusch ich mich da jetzt?

Also ich wär euch über jeden Tipp oder Hinweis dankbar!!!

@bloob

Sag mal könntest du mir vielleicht mal dein Script schicken?
Antworten