Мне нужно собрать данные о памяти операционных систем Windows с использованием WMI. В этом смысле я разработал Perl-скрипт для создания таких данных. Однако мне интересно, правильно ли мой метод и каковы альтернативы. Предполагается, что способ сбора данных должен быть как можно более широким с точки зрения ОС Windows.Получить значения памяти WMI с помощью Perl
Если вы не perlish, это то, что я, что проверить:
MEM_USED = Win32_OperatingSystem->TotalVisibleMemorySize - Win32_OperatingSystem->FreePhysicalMemory
SWAP_USED = (Win32_OperatingSystem->SizeStoredInPagingFiles - Win32_OperatingSystem->FreeSpaceInPagingFiles)/Win32_OperatingSystem->SizeStoredInPagingFiles
Это мой сценарий:
#!/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;
}
Примечание: В 2011-01-19 Я ve обновил этот сценарий, так как в то время не было конфликтов с комментариями.
Выглядит хорошо. 'winmgmts' и' Win32_OperatingSystem' поддерживаются с Windows 2000. Вам нужно поддерживать что-то более старое? – mob
Хм ... Я думаю, что это неправильно! После некоторых исследований Google я обнаружил, что: Виртуальная память = физическая память (RAM) + расширенная память (диск) Мне нужно отменить скрипт ... –
У меня есть обновленный скрипт perl ... это правильно Теперь? –