URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 62034
[ Назад ]

Исходное сообщение
"mem.pl"

Отправлено .Ya. , 22-Ноя-05 17:48 
Добрый день. Может кто то сталкивался с такой проблемой или знает как ее решить подскажите не проходите мимо :). Поставил я mrgt версии 2.12.2,  страница появилась а на ней ничего не отображается. Если с консоли то ./mbmon показывает температуру проца.
А все остальные не работают при запуске файла loadavg ничего не отображает, а при mem.pl выводит:
Use of uninitialized value in addition (+) at ./mem.pl line 69.
Use of uninitialized value in addition (+) at ./mem.pl line 69.
0
0

Содержание

Сообщения в этом обсуждении
"mem.pl"
Отправлено .Ya. , 22-Ноя-05 19:53 
Странно что на одном сервере работает, а на другом, к сожалению, нет. Я просмотрел код и увидел что ramCached выводит, а ramBuffers,ramTotal,ramFree даный не передает. Подскажите правильно записаны регулярные выражения для парсинга /proc/meminfo
часть кода mem.pl
------------------------------------------------
initialize();
my @input = `cat /proc/meminfo`;
shift @input; shift @input; shift @input;
my %info = ();
foreach (@input) {
  ## vsego operativki
  if ($_ =~ /^MemTotal:/i) {
      (
        $info{'tmp'},
        $info{'ramTotal'},
        $info{'tmp'},
      ) = split(/\s+/, $_);
  }
  ## vsego svobodnoy  RAM
  if ($_ =~ /^MemFree:/i) {
      (
        $info{'tmp'},
        $info{'ramFree'},
        $info{'tmp'},
      ) = split(/\s+/, $_);
  }
  ##operativy pod bufera
  if ($_ =~ /^Buffers:/i) {
      (
        $info{'tmp'},
        $info{'ramBuffers'},
        $info{'tmp'},
      ) = split(/\s+/, $_);
  }
  ## pod cache
  if ($_ =~ /^Cached:/i) {
      (
        $info{'tmp'},
        $info{'ramCache'},
        $info{'tmp'},
      ) = split(/\s+/, $_);
  }
---------------------------------------------------

"mem.pl"
Отправлено .Ya. , 23-Ноя-05 16:41 
Проблема была в регулярных выражениях. Вот так работает :)
my $ram;
## vsego operativki
  $ram=`cat /proc/meminfo`;
if ($ram =~ /MemTotal:.*?([0-9]*) kB/i)
      { $info{'ramTotal'} = $1; }
foreach (@input) {
              ...
              ...
              ...
}