Moin.
Gibt es eigentlich einen einfachen Weg, den total belegten Speicher eines Benutzers anzuzeigen?
Die RSS in ps oder die SIZE von lsof muss man sonst immer manuell zusammenaddieren. Gerade wegen den Angaben in limits.conf muesste es doch einen Weg geben, den insgesamt belegten Speicher eines Users anzuzeigen. Vielleicht wusste ich sogar mal wie das ging.
Danke.
Gruss, Jan.
Speicherbelegung eines einzelnen Benutzer aufsummieren
-
- Posts: 3840
- Joined: 2003-01-21 01:59
- Location: Sinsheim/Karlsruhe
Re: Speicherbelegung eines einzelnen Benutzer aufsummieren
Wenn dir ein paar Zeilen selbstgeschriebenes Perl nicht zu viel sind, würde ich dir raten, mal einen Blick auf das Modul Proc::ProcessTable zu werfen.
http://www.thomas-fahle.de/pub/perl/UNI ... Table.html
http://www.linux-magazin.de/Artikel/aus ... /proc.html
http://www.thomas-fahle.de/pub/perl/UNI ... Table.html
http://www.linux-magazin.de/Artikel/aus ... /proc.html
-
- Posts: 45
- Joined: 2003-12-22 11:09
Re: Speicherbelegung eines einzelnen Benutzer aufsummieren
Hey dodolin,
vielen herzlichen Dank fuer den Tipp!
Falls irgendwann jemand vor einem aehnlichen Problem steht, hier das Resultat:
Aufrufen via ./script.pl [uid|username...]
vielen herzlichen Dank fuer den Tipp!
Falls irgendwann jemand vor einem aehnlichen Problem steht, hier das Resultat:
Aufrufen via ./script.pl [uid|username...]
Code: Select all
#!/usr/bin/perl
use Proc::ProcessTable;
$tab = new Proc::ProcessTable;
foreach (@ARGV)
{
$user = $_;
$mem = 0;
$memsize = 0;
$liste = '';
if($user ne $user + 0)
{
$username = $user;
$userid = getpwnam($user);
} else {
$username = getpwuid($user);
$userid = $user;
}
foreach $proc ( @{$tab->table} )
{
if($proc->uid eq $userid)
{
$mem += $proc->rss;
$memsize += $proc->size;
$liste .= sprintf("%6d %10d %sn",
$proc->pid, $proc->rss,
$proc->cmndline || $proc->fname);
}
}
printf("n%s: %5d MB (%d MB)n PID SIZE CMDn%s",
$username, $mem/1024/1024,
$memsize/1024/1024, $liste);
print "------------------------------------------------------n";
}