用于重启超过RAM的进程的脚本

时间:2011-10-04 14:17:50

标签: perl shell powershell vbscript autohotkey

我想编写一个可以作为Windows服务运行的脚本。当用户使用该进程时,它将重新启动进程表中活动的进程,并且它超过例如500mb的RAM。我怎样才能做到这一点?有人可以建议任何一个例子吗?

1 个答案:

答案 0 :(得分:3)

一直都是肮脏的方式。在Windows中使用tasklist

use List::Util qw<first>;

my ( $mem )      
    = map   { ( my $a = $_ ) =~ s/,//g; $a } 
      grep  {; length } 
      map   { m/([\d,]+)[ ]K$/ } 
      first { m/^perl\.exe\s+$$\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 && $set->{WorkingSetSize};