Wenn Du das Modul Inline benutzen kannst, kannst Du auch das folgende Skript nehmen:
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
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";
--END--
--C--
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|'