Script für HomeVerzeichnis größen
Hallo zusammen, kennt jemand von euch ein Script, welches mir ausgibt, welcher User wieviel MB in seinem Homeverzeichnis hat. und mir das dann nach der größe sortiert??? Bekomme das mit sort u. awk nicht auf die reihe. Danke schonmal, Stefan
Stefan Eggert wrote:
kennt jemand von euch ein Script, welches mir ausgibt, welcher User wieviel MB in seinem Homeverzeichnis hat. und mir das dann nach der größe sortiert???
for i in /home/* ; do du -sk $i ; done | sort -n Muss natuerlich als root aufgerufen werden, da man sonst evtl. nicht alle Verzeichnisse der User er- wischt (je nach Berechtigung). Gruesse, Thomson -- Thomas Hertweck, Geophysicist Geophysical Institute, Karlsruhe University (TH)
Thomas Hertweck schrieb:
Stefan Eggert wrote:
kennt jemand von euch ein Script, welches mir ausgibt, welcher User wieviel MB in seinem Homeverzeichnis hat. und mir das dann nach der größe sortiert???
for i in /home/* ; do du -sk $i ; done | sort -n
Muss natuerlich als root aufgerufen werden, da man sonst evtl. nicht alle Verzeichnisse der User er- wischt (je nach Berechtigung).
Hat super funktioniert!!!! Danke.
Hallo, On Thu, 12 Sep 2002, Thomas Hertweck wrote:
Stefan Eggert wrote:
kennt jemand von euch ein Script, welches mir ausgibt, welcher User wieviel MB in seinem Homeverzeichnis hat. und mir das dann nach der größe sortiert???
for i in /home/* ; do du -sk $i ; done | sort -n
Wozu die Schleife? du -s -k /home/* | sort -n -dnh -- Da wo Männer ihr Hirn haben, haben Frauen nur ein Loch.
Moin! David Haller wrote:
On Thu, 12 Sep 2002, Thomas Hertweck wrote:
[...] for i in /home/* ; do du -sk $i ; done | sort -n
Wozu die Schleife?
du -s -k /home/* | sort -n
Hast recht, ist in dem Falle nicht noetig ;-) Ist zwar nicht falsch, aber definitiv nicht noetig, ich ziehe hiermit mei- nen Vorschlag also halbwegs zurueck. Ist wohl so ne Angewohn- heit von mir, weil ich es fuer andere Befehle als "du" manch- mal brauche.... Gruesse, Thomson -- Thomas Hertweck, Geophysicist Geophysical Institute, Karlsruhe University (TH)
Hallo, On Thu, 12 Sep 2002, Thomas Hertweck wrote:
David Haller wrote:
On Thu, 12 Sep 2002, Thomas Hertweck wrote:
[...] for i in /home/* ; do du -sk $i ; done | sort -n
Wozu die Schleife?
du -s -k /home/* | sort -n
Hast recht, ist in dem Falle nicht noetig ;-) Ist zwar nicht falsch, aber definitiv nicht noetig, ich ziehe hiermit mei- nen Vorschlag also halbwegs zurueck. Ist wohl so ne Angewohn- heit von mir, weil ich es fuer andere Befehle als "du" manch- mal brauche....
Ohja, das boese Ungetuem der Gewohnheit -- geht mir auch dauernd so ;)) -dnh --
Nimm Alzheimer. >Warum? Welche Vorteile gibt's denn da? 1.) Du kannst Dir die Ostereier selber verstecken. 2.) Du Lernst jeden Tag neue Leute kennen. 3.) ...und Du kannst Dir die Ostereier selber verstecken. [Herbert Steinboeck und Florian Gross in suse-talk]
On 12 Sep 2002 at 10:05, Thomas Hertweck wrote:
Moin!
David Haller wrote:
On Thu, 12 Sep 2002, Thomas Hertweck wrote:
[...] for i in /home/* ; do du -sk $i ; done | sort -n
Wozu die Schleife?
du -s -k /home/* | sort -n
Hast recht, ist in dem Falle nicht noetig ;-) Ist zwar nicht falsch, aber definitiv nicht noetig, ich ziehe hiermit mei- nen Vorschlag also halbwegs zurueck. Ist wohl so ne Angewohn- heit von mir, weil ich es fuer andere Befehle als "du" manch- mal brauche....
Ihr habt wohl beide nicht so viele User im System. Also: Während die Lösung 1 (mit for-Schleife) immer funktioniert, scheitert die Lösung zwei, wenn zu viele Homeverzeichnisse da sind (dann wird schlichtweg der Zeilenpuffer der Shell zu klein). Es gibt demnach einen signifikanten Unterschied, der allerdings in den meisten Installationen nicht bemerkt wird. Hier auf ein paar Kisten in der Firma würde die Lösung ohne Schleife nicht mehr laufen! Andreas
Andreas Kyek wrote:
On 12 Sep 2002 at 10:05, Thomas Hertweck wrote:
David Haller wrote:
On Thu, 12 Sep 2002, Thomas Hertweck wrote:
[...] for i in /home/* ; do du -sk $i ; done | sort -n
Wozu die Schleife?
du -s -k /home/* | sort -n
Hast recht, ist in dem Falle nicht noetig ;-) Ist zwar nicht falsch, aber definitiv nicht noetig, ich ziehe hiermit mei- nen Vorschlag also halbwegs zurueck. Ist wohl so ne Angewohn- heit von mir, weil ich es fuer andere Befehle als "du" manch- mal brauche....
Ihr habt wohl beide nicht so viele User im System.
Hmm, "cat /etc/passwd | wc -l" liefert 162... Wenn man die eingetragenen System-User abzieht, dann duerften so ca. 150 anstaendige User uebrig bleiben....
Also: Während die Lösung 1 (mit for-Schleife) immer funktioniert, scheitert die Lösung zwei, wenn zu viele Homeverzeichnisse da sind (dann wird schlichtweg der Zeilenpuffer der Shell zu klein).
Tja, das Phaenomen kenne ich beim Loeschen vieler Dateien. Manchmal will ein "rm -f *" einfach nicht mehr gehen... ;-)
Es gibt demnach einen signifikanten Unterschied, der allerdings in den meisten Installationen nicht bemerkt wird. Hier auf ein paar Kisten in der Firma würde die Lösung ohne Schleife nicht mehr laufen!
Gut zu wissen...! Gruesse Thomson -- Thomas Hertweck, Geophysicist Geophysical Institute, Karlsruhe University (TH)
Hallo, On Thu, 12 Sep 2002, Andreas Kyek wrote:
On 12 Sep 2002 at 10:05, Thomas Hertweck wrote:
David Haller wrote:
On Thu, 12 Sep 2002, Thomas Hertweck wrote:
[...] for i in /home/* ; do du -sk $i ; done | sort -n
Wozu die Schleife?
du -s -k /home/* | sort -n
Hast recht, ist in dem Falle nicht noetig ;-) Ist zwar nicht falsch, aber definitiv nicht noetig, ich ziehe hiermit mei- nen Vorschlag also halbwegs zurueck. Ist wohl so ne Angewohn- heit von mir, weil ich es fuer andere Befehle als "du" manch- mal brauche....
Ihr habt wohl beide nicht so viele User im System.
Stimmt bei mir -- du aber auch nicht! *eg* (s.u.)
Also: Während die Lösung 1 (mit for-Schleife) immer funktioniert, scheitert die Lösung zwei, wenn zu viele Homeverzeichnisse da sind (dann wird schlichtweg der Zeilenpuffer der Shell zu klein).
Ack. Aber: das 'for' scheitert (genauso) bald an der Expandierung des '*'. Die Schleife hilft hier also nicht weiter (oder hast du nen Gegenbeweis? So bei sagen wir 20k Verz. in /home?), da das /home/* in beiden Faellen von der Shell expandiert wird. Dann ist also sowieso was besseres gefragt, z.B.: find /home/ -type d -maxdepth 1 -exec du -sk {} \; (ungetestet). -dnh -- Ihr Scherzkekse! Computer - und das sollte bekannt sein - rechnen garnicht. Sie setzten oder löschen bits. Nicht mehr, nicht weniger. Daß dies gelegentlich wie "Rechnen" oder "Usenet" oder "Display Postscript" aussieht ist eher Zufall, trägt aber zur Erhaltung der Art bei. -- Dietz Proepper in dasr
On 12 Sep 2002 at 10:56, David Haller wrote: [...]
Ack. Aber: das 'for' scheitert (genauso) bald an der Expandierung des '*'. Die Schleife hilft hier also nicht weiter (oder hast du nen Gegenbeweis? So bei sagen wir 20k Verz. in /home?), da das /home/* in beiden Faellen von der Shell expandiert wird.
eben nicht! Ich habe bisher nicht verstanden, wieso nicht. Aber z.B. ein "rm *20020910*" ausgeführt in bestimmten Log-Verzeichnissen hier scheitert IMMER, dagegen wird eine for-Schleife über die gleiche Filemenge problemlos ausgeführt. Falls jemand dafür eine plausible Erklärung hat: her damit!
Dann ist also sowieso was besseres gefragt, z.B.:
find /home/ -type d -maxdepth 1 -exec du -sk {} \;
(ungetestet).
Das geht natürlich auch. (Und wie immer gibt es unter Unix/Linux mehr als einen Weg, der zum Ziel führt) Andreas
On Don, 12 Sep 2002 at 11:22 (+0200), Andreas Kyek wrote:
On 12 Sep 2002 at 10:56, David Haller wrote:
[...]
Ack. Aber: das 'for' scheitert (genauso) bald an der Expandierung des '*'. Die Schleife hilft hier also nicht weiter (oder hast du nen Gegenbeweis? So bei sagen wir 20k Verz. in /home?), da das /home/* in beiden Faellen von der Shell expandiert wird.
eben nicht!
Ich habe bisher nicht verstanden, wieso nicht. Aber z.B. ein "rm *20020910*" ausgeführt in bestimmten Log-Verzeichnissen hier scheitert IMMER, dagegen wird eine for-Schleife über die gleiche Filemenge problemlos ausgeführt.
Kann ich bestätigen. Den Trick mit der for-Schleife habe ich im Falle einer Anwendungs-SW (Cross-Basic auf SINIX), die historisch bedingt (Cross-Interpreter für Quattro-8870-SW) zigtausende Dateien in ein Basis-Verzeichnis knallte, oft anwenden müssen. Erklärungsversuch: Es geht nicht um einen Puffer der Shell, sondern um den Puffer für die Kommandozeilen-Argumente. Die Fehlermeldung besagt ja auch ungefähr *argument list too long*. for ist ein Shell-Builtin und wird demzufolge nicht als eigener Prozess mit Argumentliste gestartet.
Falls jemand dafür eine plausible Erklärung hat: her damit!
Geht das so? ;-)
Dann ist also sowieso was besseres gefragt, z.B.:
find /home/ -type d -maxdepth 1 -exec du -sk {} \;
(ungetestet).
Das geht natürlich auch. (Und wie immer gibt es unter Unix/Linux mehr als einen Weg, der zum Ziel führt)
ACK. Die for-Schleife lässt sich aber leichter erweitern, wenn man nicht nur einen Befehl pro Verzeichnis unterbringen will. find hat dafür den Vorteil, dass man statt exec (pro Treffer ein Prozess) die Kombination -print | xargs nutzen kann. Jan
* Stefan Eggert schrieb am 12.Sep.2002:
kennt jemand von euch ein Script, welches mir ausgibt, welcher User wieviel MB in seinem Homeverzeichnis hat. und mir das dann nach der größe sortiert???
du
Bekomme das mit sort u. awk nicht auf die reihe.
du -sm /home/* | sort -n müßte es tun. Bernd -- ROTFL = Rolling On The Floor, Laughing = Auf dem Boden wälzen, lachend. SCNR = Sorry, Could Not Resist = Sorry, Ich konte nicht wiederstehen. AFAIK = As Far As I Know = So weit ich weis|BTW = By The Way = Nebenbei bemerkt IMHO = In My Humble Opinion = meiner bescheidenen Meinung nach |Zufallssig. 9
participants (6)
-
Andreas Kyek
-
B.Brodesser@t-online.de
-
David Haller
-
Jan.Trippler@t-online.de
-
Stefan Eggert
-
Thomas Hertweck