#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};