#!/usr/bin/perl ########################################### # sysinfo - Show Linux System Statistics # Mike Schilli, 2002 (m@perlmeister.com) ########################################### use warnings; use strict; use Inline "C"; my ($uptime, $load1, $load5, $load15, $totalram, $freeram, $sharedram, $bufferram, $totalswap, $freeswap, $procs) = sysinfo_as_list(); die "sysinfo failed" unless defined $uptime; print "Uptime: $uptime secs\n"; print "Load: $load1, $load5, $load15\n"; print "$procs processes running\n"; __END__ __C__ #include #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.uptime)); Inline_Stack_Push(MO_IV(si.loads[0])); Inline_Stack_Push(MO_IV(si.loads[1])); Inline_Stack_Push(MO_IV(si.loads[2])); Inline_Stack_Push(MO_IV(si.totalram)); Inline_Stack_Push(MO_IV(si.freeram)); Inline_Stack_Push(MO_IV(si.sharedram)); Inline_Stack_Push(MO_IV(si.bufferram)); Inline_Stack_Push(MO_IV(si.totalswap)); Inline_Stack_Push(MO_IV(si.freeswap)); Inline_Stack_Push(MO_IV(si.procs)); Inline_Stack_Done; }