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