perl - 重新启动超出 RAM 的进程的脚本

标签 perl shell powershell vbscript autohotkey

我想编写一个可以作为 Windows 服务运行的脚本。当用户正在使用进程并且它超过例如 500mb 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};

关于perl - 重新启动超出 RAM 的进程的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7649336/

相关文章:

linux - 我们可以将 Perl 脚本中使用的变量设置为环境变量吗?

bash - mpirun 打破了 bash 中的 while 循环

bash - 如何将自定义字符串作为 argv[0] 传递给程序

powershell - 无法从 PowerShell 使用 Acrobat XI JSObject

azure - 自动 Azure 密码更改

powershell - 获取证书的预期目的

regex - perl 正则表达式 : how to escape backslash character

perl - 如何为HTML编码字符串?

perl - 为什么 md5 与 Perl 的 Digest::MD5 输出不匹配?

android - Windows 中的 Android 版 FFMPEG 无法成功编译