Powershell脚本重启Apache进程

时间:2015-08-14 18:11:55

标签: apache powershell apache2.2

一旦Apache进程达到内存阈值,我正在使用powershell脚本重新启动Apache服务。 该脚本将按任务管理器中的计划每分钟运行2-3次。

在下面的脚本中,我是否需要使用start-sleep命令行开关,如果是这样,哪里最好放置它以及让它睡眠多少秒?

{{1}}

更新 Apache可能有2个或更多进程,Get-Wmi会将它们返回为httpd,httpd#1,httpd#2,.... 我问这个的原因是循环将检查这些进程的工作集,所以想象有3个处理返回:httpd,httpd#1,httpd#2和imaginge httpd#1和httpd#2都已到达阈值。 请注意,在循环中,我正在重新启动 service ,这将重新启动进程。由于我的两个httpd进程已达到阈值,我将重新启动服务2-ice。我试图确保即使多个进程达到阈值,服务重启也只会发生一次。不确定启动睡眠是否可以解决这个问题,或者是否有更好的方法。

非常感谢。

1 个答案:

答案 0 :(得分:0)

$Threshold = 200 * 1024 * 1024;     # Bytes (209,715,200 bytes = 0.195GB)
$ServiceName = my service name;

Get-WmiObject -ComputerName "localhost" -Class Win32_PerfFormattedData_PerfProc_Process | where { $_.Name -like "httpd*" } | foreach {
    $procobj = $_;

    if($procobj.workingset -gt $Threshold)
    {  
        stop-Service $ServiceName;

        start-Service $ServiceName;

        $stamp = Get-Date
        echo $($stamp + " Started service: " + $ServiceName);
        break;
    }
}