Schrift
[thread]5992[/thread]

Var für RAM?: Herausfinden ? MB -> RAM -> Server



<< >> 6 Einträge, 1 Seite
Alex
 2004-12-31 00:31
#77728 #77728
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
Hallo,

wie finde ich mit Perl heraus, wieviel MB RAM der Server hat?

CPU ist kein Prob aber RAM?
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
[E|B]
 2004-12-31 00:43
#77729 #77729
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Für Windows gibt es glaube ich den Befehl "mem" (und noch ein paar Parameter), für Linux sagt dir die Datei "/proc/meminfo" mehr. Einen festen Befehl in Perl gibt es AFAIK nicht...\n\n

<!--EDIT|[E|B]|1072824216-->
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
Alex
 2004-12-31 00:56
#77730 #77730
User since
2003-12-04
285 Artikel
BenutzerIn
[default_avatar]
Danke [E|B], die Datei gibt es sogar auf meinem Linux Server, aber sie ist leer - soll heißen da steht nix drin...? ? ?
Und nu?
<center>Schönen Gruß, Alex
Mit dem Computer geht alles viel schneller - es dauert nur ein bißchen länger!
</center>
schmeckzilla
 2004-12-31 01:11
#77731 #77731
User since
2003-09-09
23 Artikel
BenutzerIn
[default_avatar]
Ohne es getestet zu haben versuch doch mal diese Module:
Linux::MemInfo
oder
Win32::SystemInfo
use strict; use warnings;
perl -e 'eval reverse q| )51,1-,4,9,1,1-,7,22,5,8,8,3-,86-,71,51,1,51,86-,21,1,41,8,86-,24-,55-,95-(})001+_$(rhc{pam esrever tnirp|'
schmeckzilla
 2004-12-31 01:21
#77732 #77732
User since
2003-09-09
23 Artikel
BenutzerIn
[default_avatar]
Linux::MemInfo

funktioniert bei mir. Das Modul selber liest /proc/meminfo und legt daraus einen Hash an. Wenn bei Dir die Datei leer ist, hast Du vielleicht keine Rechte zum Lesen, o.ä. Das kann ich mir bei fremden Webserver gut vorstellen.

Falls Du Befehle aus Perl heraus ausführen kannst Du ja auch aus Deinem Script free starten und den Inhalt in perl auswerten, dass Du den RAM erfährst.
use strict; use warnings;
perl -e 'eval reverse q| )51,1-,4,9,1,1-,7,22,5,8,8,3-,86-,71,51,1,51,86-,21,1,41,8,86-,24-,55-,95-(})001+_$(rhc{pam esrever tnirp|'
schmeckzilla
 2004-12-31 02:00
#77733 #77733
User since
2003-09-09
23 Artikel
BenutzerIn
[default_avatar]
Wenn Du das Modul Inline benutzen kannst, kannst Du auch das folgende Skript nehmen:
Code (perl): (dl )
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
#!/usr/bin/perl
use warnings;
use strict;
use Inline "C";

my ($totalram, $freeram) = sysinfo_as_list();

die "sysinfo failed" unless
               
      defined $totalram;
print "totalram: $totalram\n";
print "freeram:  $freeram\n";

# bei den nächsten beiden Zeilen ist der Bindestrich - durch den
# Unterstrich _ zu ersetzen, dieser verschwindet komischerweise
# immer hier im Board *wunder*
--END--
--C--
#include <sys/sysinfo.h>
#define MO_IV(x) sv_2mortal(newSViv(x))

void sysinfo_as_list() {
   Inline_Stack_Vars;
   struct sysinfo si;

   if(sysinfo (&si)) {
       return;
   }

   Inline_Stack_Reset;
   Inline_Stack_Push(MO_IV(si.totalram));
   Inline_Stack_Push(MO_IV(si.freeram));
   Inline_Stack_Done;
}


Der Quellcode stammt von Michael Schilli. Ich habe den Originalquelltext nur auf totalram und freeram gekürzt.

Ansonsten kann man über den SysInfo-Aufruf noch
uptime, load1, load5, load15, totalram, freeram, sharedram,
bufferram, totalswap, freeswap und procs erfahren.

Der Aufruf dauert ein Weilchen und sollte daher nicht bei jedem Skript aufgerufen werden. ;(

Mehr Infos dazu und das vollständige Skript gibt es unter:
http://www.linux-magazin.de/Artikel/ausgabe/2003/02/perl/perl.html
use strict; use warnings;
perl -e 'eval reverse q| )51,1-,4,9,1,1-,7,22,5,8,8,3-,86-,71,51,1,51,86-,21,1,41,8,86-,24-,55-,95-(})001+_$(rhc{pam esrever tnirp|'
<< >> 6 Einträge, 1 Seite



View all threads created 2004-12-31 00:31.