Скрипт для перезапуска процесса с превышением ОЗУ

#perl #shell #powershell #vbscript #autohotkey

#perl #оболочка #powershell #vbscript #автоотключение

Вопрос:

Я хочу написать скрипт, который может запускаться как служба Windows. Это приведет к перезапуску процесса, активного в таблице процессов, когда пользователь использует процесс, и он превышает, например, 500 МБ оперативной памяти. Как я могу это сделать? Может кто-нибудь предложить какой-либо пример?

Ответ №1:

Всегда есть грязный способ. Использование tasklist в Windows:

 use List::Util qw<first>;

my ( $mem )      
    = map   { ( my $a = $_ ) =~ s/,//g; $a } 
      grep  {; length } 
      map   { m/([d,] )[ ]K$/ } 
      first { m/^perl.exes $$b/ } 
      `tasklist`;

if ( $mem > MAX_MEM ) {
    do_something();
}
  

Но, насколько я понимаю, вы также можете сделать это так, с Win32::Process::Info :

 use Win32::Process::Info;
my  $pi = Win32::Process::Info->new ();
my $set = first { exists $_->{WorkingSetSize} } $pi->GetProcInfo( $$ );
my $mem = $set amp;amp; $set->{WorkingSetSize};