Войти

Показать полную графическую версию : Контроль зависания программ2


lenagan
16-11-2015, 11:05
привет! В старой теме нашел скрипт для перезапуска зависшего процесса...,
http://forum.oszone.net/nextoldesttothread-190606.html

powershell if (-not (get-process KillTest).responding) { kill -name KillTest; $log=Get-Date; KillTest } if ($log) { Add-Content restart.log $log }

скажите пожалуйста как его прописать, чтобы он смотрел процесс с именем mailserver.exe и mctrl.exe и перезапускал в случае необходимости их... лежат в директории
C:\Program Files (x86)\Kerio\MailServer\mailserver.exe
C:\Program Files (x86)\Kerio\MailServer\mctrl.exe

greg zakharov
16-11-2015, 12:17
'mailserver', 'mctrl' | % {
<#
enum {
...
ssfPROGRAMFILESx86 = 0x30
} ShellSpecialFolderConstants;
#>
$dir = (New-Object -ComObject Shell.Application).NameSpace(0x30).Self.Path
}{
if (!(ps $_).Responding) {
ii "$($dir)\$_.exe"
}
}

lenagan
16-11-2015, 13:23
спасибо - скрипт отрабатывает...но я даже не пойму правильно ли!?

в предыдущем я хоть понимал что и где - подставлял notepad, вешал его и проверял - отрабатывало) а тут темный лес для меня) или доделать бы, чтобы он эти екзешники запускал, если их нет в процессах

Если еще есть варианты попроще написания - пожалуйста напишите) как в первом посте - его бы допилить..плюс там лог ведется - тоже хорошая плюшка!

greg zakharov
16-11-2015, 14:21
Куда уж проще?! 'mailserver', 'mctrl' | % { # массив из вожделенных процессов
$dir = (New-Object -ComObject Shell.Application).NameSpace(0x30).Self.Path # путь до ProgramFilesx86
}{
if (!(ps $_).Responding) { # если процесс не отвечает...
kill -Id $_.Id # ...убить процесс и...
ii "$($dir)\$_.exe" # ...запустить новую копию
}
}

lenagan
17-11-2015, 11:08
а лог нельзя добавить?) как в первои посте, чтоб хотя б в текстовый файл писал при зависании ?!))

greg zakharov
17-11-2015, 16:03
а лог нельзя добавить?)Ну так добавьте, что мешает?!




© OSzone.net 2001-2012