2
我想編寫一個可以作爲Windows服務運行的腳本。當用戶使用該進程時,它將重新啓動進程表中激活的進程並超過例如500MB的RAM。我怎樣才能做到這一點?有人可以提出任何示例嗎?重新啓動超過RAM的進程的腳本
我想編寫一個可以作爲Windows服務運行的腳本。當用戶使用該進程時,它將重新啓動進程表中激活的進程並超過例如500MB的RAM。我怎樣才能做到這一點?有人可以提出任何示例嗎?重新啓動超過RAM的進程的腳本
總有骯髒的方式。在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};