Jump to content

process/program Crash detection


 Share

Recommended Posts

I know that this is sloppy. I have written a script for work that detects when a certain program stops functioning. Currently I am using a simple pixle test on a blinking light in the program. The light stops blinking and I know that the program has stopped. There are no error messages upon crash, and no noticeable change except nothing updates anymore, including the blinking light.

There must be a smarter way to detect a program/process crash.

any advice would be great

P.S.

I know that the way I am writing the log sucks LOL ( but its only for work and I was in a hurry LMAO )

thanks in advance

CODE
$run = 1 ; for the while statement

$color = 0 ; just needs to be declared

$timeout = 30 ; seconds to timeout the restart

$proc = "ResMan.exe" ; name of process to restart

$runme = "\\spr1aprapppin01\aproposinstall\Resman6\resman.exe" ; name of exe to start on process kill

$runindir = "C:\Program Files\Common Files\Apropos Shared"

While $run = 1

If ProcessExists($proc) Then

;Do Nothing; run as usual

Else

MsgBox(0, "Error", "the " & $proc & " process is not running. Start it before starting this script")

Exit

EndIf

$test = PixelGetColor(175, 50)

If $test <> $color Then

$color = $test

$time = (@HOUR * 3600) + (@MIN * 60) + @SEC

EndIf

$ctime = (@HOUR * 3600) + (@MIN * 60) + @SEC

If $ctime - $time > $timeout Then ;If it has been the specified timeout, this will trigger restart

$info = "Crash detected - Script stopped: " & @MON & "-" & @MDAY & "-" & @YEAR & "-" & @HOUR & "." & @MIN & "." & @SEC

FileWrite("log.log", $info & @CRLF)

ProcessClose($proc) ;kill process

$info = "Killed ResMan: " & @MON & "-" & @MDAY & "-" & @YEAR & "-" & @HOUR & "." & @MIN & "." & @SEC

FileWrite("log.log", $info & @CRLF)

$looping = 1

While $looping = 1

If ProcessExists($proc) Then

;loop

Else

$info = "Kill Successful: " & @MON & "-" & @MDAY & "-" & @YEAR & "-" & @HOUR & "." & @MIN & "." & @SEC

FileWrite("log.log", $info & @CRLF)

$looping = 2

EndIf

WEnd

Run($runme, $runindir)

$info = "Starting ResMan again: " & @MON & "-" & @MDAY & "-" & @YEAR & "-" & @HOUR & "." & @MIN & "." & @SEC

FileWrite("log.log", $info & @CRLF)

WinWait("Apropos Resource Manager Version 6.5 Log On") ; wait for login screen

WinActivate("Apropos Resource Manager Version 6.5 Log On") ; bring login to front

Sleep(500)

Send("{tab}")

Sleep(500)

Send("password")

Sleep(500)

Send("{enter}")

$info = "Entered Password for attempt on start: " & @MON & "-" & @MDAY & "-" & @YEAR & "-" & @HOUR & "." & @MIN & "." & @SEC

FileWrite("log.log", $info & @CRLF)

Sleep(300000) ;Waits five minutes to start testing pixel again

$time = (@HOUR * 3600) + (@MIN * 60) + @SEC

$ctime = (@HOUR * 3600) + (@MIN * 60) + @SEC

$info = "Script Active Again: " & @MON & "-" & @MDAY & "-" & @YEAR & "-" & @HOUR & "." & @MIN & "." & @SEC

FileWrite("log.log", $info & @CRLF)

EndIf

WEnd

Exit

Link to comment
Share on other sites

the process does not close when the program crashes, that is the issue. The process is still running. So to re phrase the question; how can you detect the crash of a program that doesn't stop its process when it fails, also there is no popup dialog box or any warning.

Link to comment
Share on other sites

the process does not close when the program crashes, that is the issue. The process is still running. So to re phrase the question; how can you detect the crash of a program that doesn't stop its process when it fails, also there is no popup dialog box or any warning.

there is no way to detect that.

__________________________________________________________(l)user: Hey admin slave, how can I recover my deleted files?admin: No problem, there is a nice tool. It's called rm, like recovery method. Make sure to call it with the "recover fast" option like this: rm -rf *

Link to comment
Share on other sites

is there a way to monitor CPU/Ram usage of the process?

try this:

$strComputer = "."
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * from Win32_PerfRawData_PerfProc_Process")
For $objItem in $colItems
    ConsoleWrite("Name: " & $objItem.Name & @CRLF)
    ConsoleWrite("PercentProcessorTime: " & $objItem.PercentProcessorTime& @CRLF)
    ConsoleWrite("PercentUserTime: " & $objItem.PercentUserTime& @CRLF)
Next

Use the value of _Total to calculate the "real" percentage of each process.

__________________________________________________________(l)user: Hey admin slave, how can I recover my deleted files?admin: No problem, there is a nice tool. It's called rm, like recovery method. Make sure to call it with the "recover fast" option like this: rm -rf *

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...