Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Проверки запущенного процесса. (http://forum.oszone.net/showthread.php?t=348778)

Svnkill 16-05-2021 14:27 2958081

Проверки запущенного процесса.
 
У мен есть программа которая должна работать 24/7 но бывает что она сама по себе может крашнуться. Как сделать так чтобы батник чекал запущена программа или нет и если нет то запускал ее, желательно с зарежкой в 1 минуту. И нужно чтобы батник проверял это постоянно

megaloman 16-05-2021 15:53 2958090

Нашел готовый vbs-скрипт.
Код:

'*******************************************************************
' Описание: Запуск отсутствующей программы
'*******************************************************************

Exe = "Notepad.exe"                    ' Исполнимый файл программы
PathExe = "C:\WINDOWS\system32"        ' Путь к файлу (без \ на конце)

On Error Resume Next

If Err.Number = 0 Then
    Set WMI = GetObject("winMgmts:")
    Set Processes = WMI.ExecQuery("SELECT * FROM Win32_Process Where Name=""" + Exe + """")
   
    Present = False
    For Each Process In Processes
        Present = (UCase(Process.Name) = UCase(Exe))
'        MsgBox Process.Name + vbCrLf + Exe
    Next
   
    Set WS = CreateObject("WScript.Shell")

    If Not Present Then
        WS.Exec PathExe + "\" + Exe
    End If
   
End If

Поместите его исполнение в планировщик wscript имяскрипта.vbs и настройте его выполнение с нужной вам периодичностью. CMD здесь не удобен - будете потом бороться с окном CMD.

Iska 16-05-2021 17:14 2958095

В роли:
Цитата:

Цитата Svnkill
программа которая должна работать 24/7 »

— Блокнот:
Скрытый текст
Код:

Option Explicit

Const strProcessPath = "c:\windows\system32"
Const strProcessName = "notepad.exe"


Dim objSWbemServicesEx
Dim objSWbemEventSource


Set objSWbemServicesEx = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")

objSWbemServicesEx.Get("Win32_Process").Create strProcessPath & "\" & strProcessName, strProcessPath, Nothing, vbEmpty

Set objSWbemEventSource = objSWbemServicesEx.ExecNotificationQuery( _
        "SELECT * FROM __InstanceDeletionEvent WITHIN 1 " & _
        "WHERE TargetInstance ISA 'Win32_Process' AND " & _
        "TargetInstance.Name = '" & strProcessName & "'" _
)

Do
        objSWbemEventSource.NextEvent
        WScript.Sleep 60 * 1000
        objSWbemServicesEx.Get("Win32_Process").Create strProcessPath & "\" & strProcessName, strProcessPath, Nothing, vbEmpty
Loop

Set objSWbemEventSource = Nothing
Set objSWbemServicesEx  = Nothing

WScript.Quit 0


alpap 17-05-2021 13:48 2958162

PowerShell (не ниже 5)
Код:

# Мониторинг процесса (каждые 5 сек), пропал - получим сообщение и запустим процесс через 1мин
$proc = "calc"
Function jbPrc {
  $query    = "Select * from __InstanceDeletionEvent within 5 where TargetInstance ISA 'Win32_Process' and TargetInstance.Name like '%$proc%'"
  $sourceId = "job$proc"
  Register-CimIndicationEvent -Query $query -SourceIdentifier $sourceId -Action {
    Write-Host "Process '$proc' disconnected!"
    Start-Sleep -s 60
    start $proc
  }
}
jbPrc


Iska 17-05-2021 16:54 2958188

alpap, почему like, почему не «=»?

alpap 17-05-2021 17:12 2958195

Iska,
процесс Calculator для разных операционных систем называется по-разному, думаю не только этот процесс и орфография у некоторых хромает, поэтому - на всякий случай.

Iska 17-05-2021 19:17 2958208

alpap, спасибо, ясно.

Я потому нынче пользую notepad.exe в качестве подопытного кролика.

Vadikan 17-05-2021 20:11 2958213

http://forum.oszone.net/forumdisplay...ilter_by=title

Fors1k 19-05-2021 14:42 2958401

Код:

While($true){(Start calc -PassThru).WaitForExit();Sleep 60}


Время: 18:44.

Время: 18:44.
© OSzone.net 2001-