Рестартовать зависшие процессы
Подскажите как через батник или VBS проверить не зависла ли программа "run.exe" или процесс "Run.exe"
и если висит то перезапустить его.
P/S просто taskkill -f не подходит нужно именно проверять и перезапускать только если завис иначе можно
потерять данные
|
или подскажите как стартовать файл только в том случае если его нет среди запущенных процессов
|
osp2008,
по поводу отслеживания зависшего процесса надо подумать, а запуск
процесса по факту наличия отсутствия делается так:
Код:
strCommand = "Notepad.exe"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& "." & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery( _
"Select * from Win32_Process " _
& "Where Name = '"& strCommand &"'")
If colProcesses.count = 0 Then
Set objProcess = objWMIService.Get _
("Win32_Process")
intRet = objProcess.Create _
(strCommand, Null, null, intProcessID)
If not intRet = 0 Then
Wscript.Echo "Ошибка создания процесса" & _
vbcrlf & "Command line: " & strCommand
End If
Else
Wscript.Echo "Существует " & colProcesses.count _
& " экземпляр(ов) процесса" & strCommand
End if
Создай задачу в планировщике на кратный запуск скрипта через необходимый интервал времени...
|
По отслеживанию зависшего процесса вот здесь пытаемся код создать
|
PowerShell:
Код:
$sPath2App = "E:\Песочница\0263\BadApp\BadApp.exe"
$oProcess = Get-Process -Name BadApp -ErrorAction:SilentlyContinue
if($oProcess -eq $NULL) {
Start-Process -FilePath $sPath2App
} else {
if(-not $oProcess.Responding) {
$oProcess.Kill()
Start-Process -FilePath $sPath2App
}
}
В качестве исполняемого файла использовалась утилита для имитации различных состояний процесса: Bad Application - Hang Process, Crash, Terminate Explorer - NTWind Software.
|
Время: 19:47.
© OSzone.net 2001-