Necesito recopilar datos de memoria de los sistemas operativos Windows mediante WMI. En ese sentido, desarrollé un script Perl para generar dichos datos. Sin embargo, me pregunto si mi método es correcto y cuáles son las alternativas. Se pretende que el método de recopilación de datos sea lo más amplio posible en términos del sistema operativo Windows.Obtener valores de memoria WMI con Perl
Si usted no es un perlish, esto es lo que lo que debe comprobar:
MEM_USED = Win32_OperatingSystem->TotalVisibleMemorySize - Win32_OperatingSystem->FreePhysicalMemory
SWAP_USED = (Win32_OperatingSystem->SizeStoredInPagingFiles - Win32_OperatingSystem->FreeSpaceInPagingFiles)/Win32_OperatingSystem->SizeStoredInPagingFiles
Esta es mi guión:
#!/bin/env perl
use Win32::OLE;
use strict;
use warnings;
my $wmi = Win32::OLE->GetObject("winmgmts://./root/cimv2")
or die "Failed getobject\n";
my $list, my $v;
$list = $wmi->InstancesOf("Win32_OperatingSystem")
or die "Failed getobject\n";
my $end_time = time;
my ($total_mem, $free_mem, $used_mem, $mem_percent, $free_percent);
foreach $v (in $list) {
$total_mem = $v->{TotalVisibleMemorySize};
$free_mem = $v->{FreePhysicalMemory};
$used_mem = $total_mem - $free_mem;
$mem_percent = sprintf("%.2f", $used_mem/$total_mem * 100);
$free_percent = sprintf("%.2f", $free_mem/$total_mem * 100);
print "Memory used: $mem_percent\%\n";
print "Memory free: $free_percent\%\n";
print "Memory total: $total_mem kb\n";
print "Memory used: $used_mem kb\n";
print "Memory free: $free_mem kb\n";
my $total_swap_mem = $v->{SizeStoredInPagingFiles};
my $free_swap_mem = $v->{FreeSpaceInPagingFiles};
my $used_swap_mem = $total_swap_mem - $free_swap_mem;
my $used_swap_mem_perc = ($total_swap_mem - $free_swap_mem)/$total_swap_mem * 100;
printf "Swap total:%d kb\n", $total_swap_mem;
printf "Swap free:%d kb\n", $free_swap_mem;
printf "Swap used:%d kb\n", $used_swap_mem;
printf "Swap used:%.2f %%\n", $used_swap_mem_perc;
}
Nota: En 2011-01-19 I' he actualizado esta secuencia de comandos, ya que en ese momento no había conflictos con los comentarios publicados.
Se ve bien desde aquí. 'winmgmts' y' Win32_OperatingSystem' son compatibles desde Windows 2000. ¿Necesita soportar algo más antiguo que eso? – mob
Hum ... ¡Creo que está mal! Después de investigar en Google, encontré que: Memoria virtual = Memoria física (RAM) + Memoria extendida (Disco) Necesito recrear la secuencia de comandos ... –
He actualizado el script de Perl ... ¿Es correcto? ¿ahora? –