123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- @ECHO OFF
- REM *************************************************************************
- REM
- REM Licensed Materials - Property of IBM and/or HCL
- REM
- REM IBM Informix Dynamic Server
- REM (c) Copyright IBM Corporation 2009 All rights reserved.
- REM (c) Copyright HCL Technologies Ltd. 2017. All Rights Reserved.
- REM
- REM *************************************************************************
- REM
- REM Name : onshutdown.bat
- REM Description : Batch file to ensure IDS is shutdown
- REM
- REM *************************************************************************
- SET PROG=%0
- SET TIMEOUT=%1
- SET FAILURE=1
- SET SUCCESS=0
- SET DEFAULTTIMEOUT=30
- SET MINTIMEOUT=10
- SET MAXTIMEOUT=60
- :StartScript
- ECHO Started %PROG%
- SET HAVEERROR=0
- REM Check if Command Extensions can be enabled
- VERIFY errors 2>NUL
- SETLOCAL EnableExtensions
- IF ERRORLEVEL 1 GOTO ErrCmdExtensions
- REM Check if the following programs exist
- REM - TaskList.exe
- REM - TaskKill.exe
- REM - PING.exe
- REM - START.exe
- TASKLIST /? >NUL 2>NUL
- IF ERRORLEVEL 1 GOTO ErrTaskList
- TASKKILL /? >NUL 2>NUL
- IF ERRORLEVEL 1 GOTO ErrTaskKill
- PING /? >NUL 2>NUL
- IF ERRORLEVEL 1 GOTO ErrPING
- START /? >NUL 2>NUL
- IF ERRORLEVEL 1 GOTO ErrSTART
- REM Check if required IDS environment variables are set
- IF NOT DEFINED INFORMIXDIR GOTO ErrMissingIDSEnvVar
- IF NOT DEFINED INFORMIXSERVER GOTO ErrMissingIDSEnvVar
- IF NOT DEFINED ONCONFIG GOTO ErrMissingIDSEnvVar
- REM Has the user specified more arguments than required?
- IF NOT X%2 == X GOTO PrintUsage
- REM Check and set the timeout value
- IF X%TIMEOUT% == X (
- ECHO Setting default timeout to %DEFAULTTIMEOUT% seconds.
- SET TIMEOUT=%DEFAULTTIMEOUT%
- GOTO PrintWarning
- )
- IF %TIMEOUT% LSS %MINTIMEOUT% GOTO PrintUsage
- IF %TIMEOUT% GTR %MAXTIMEOUT% GOTO PrintUsage
-
- :PrintWarning
- ECHO.
- ECHO ********************************************************
- ECHO !!! WARNING !!!
- ECHO.
- ECHO THE onshutdown SCRIPT WILL TRY TO SHUTDOWN AND TERMINATE
- ECHO THIS IDS INSTANCE %INFORMIXSERVER% UNCONDITIONALLY!
- ECHO ********************************************************
- ECHO.
- GOTO IDSShutdown
- :IDSShutdown
- SET ONMODECMD=%INFORMIXDIR%\bin\onmode.exe -ky
- SET ONCLEANCMD=%INFORMIXDIR%\bin\onclean.exe -ky
- SET ONSTATCMD=%INFORMIXDIR%\bin\onstat.exe -
- REM Give the DBA a FINAL chance to abort this script
- ECHO Hit Ctrl-C if you wish to abort this operation!
- ECHO Waiting for 10 seconds before continuing...
- PING -n 10 localhost >NUL 2>NUL
- ECHO Attempting to shutdown %INFORMIXSERVER% in %TIMEOUT% seconds...
- REM Run %INFORMIXDIR%\bin\onmode -ky in the background and get its ProcessID
- START /B %ONMODECMD%
-
- SET ONMODEPID=0
- FOR /F "tokens=2" %%I IN ('TaskList /NH /FI "IMAGENAME eq onmode.exe" 2^>NUL') DO SET ONMODEPID=%%I
- IF X%ONMODEPID% == X0 (
- ECHO Finished executing %INFORMIXDIR%\bin\onmode.exe
- SET HAVEERROR=0
- GOTO EndScript
- )
-
- SET TIMEWAITED=0
- SET TIMEINCR=5
- :Loop_WaitForOnmode
- SET TEMP_ONMODEPID=0
- FOR /F "tokens=2" %%I IN ('TaskList /NH /FI "IMAGENAME eq onmode.exe" 2^>NUL') DO SET TEMP_ONMODEPID=%%I
-
- IF X%TEMP_ONMODEPID% == X0 (
- ECHO Finished executing %INFORMIXDIR%\bin\onmode.exe
- SET HAVEERROR=0
- GOTO EndScript
- )
- PING -n %TIMEINCR% localhost >NUL 2>NUL
- SET /A TIMEWAITED=%TIMEWAITED%+%TIMEINCR%
- IF %TIMEWAITED% GEQ %TIMEOUT% (
- GOTO TimeoutExpired
- ) ELSE (
- GOTO Loop_WaitForOnmode
- )
- :TimeoutExpired
- REM Kill the onmode process if its still running
- ECHO %INFORMIXDIR%\bin\onmode timed out!
- TaskKill /F /FI "IMAGENAME eq onmode.exe" /PID %ONMODEPID% >NUL 2>NUL
- GOTO InvokeOnclean
-
- :InvokeOnclean
- ECHO Attempting to cleanup this instance forcefully...
- %ONCLEANCMD%
- IF ERRORLEVEL 0 (
- ECHO Finished executing %INFORMIXDIR%\bin\onclean.exe
- SET HAVEERROR=0
- )
- GOTO EndScript
-
- :ErrCmdExtensions
- ECHO ERROR: Cannot enable Command Extensions.
- SET HAVEERROR=1
- GOTO EndScript
- :ErrTaskList
- ECHO ERROR: Cannot find TaskList.exe.
- SET HAVEERROR=1
- GOTO EndScript
- :ErrTaskKill
- ECHO ERROR: Cannot find TaskKill.exe.
- SET HAVEERROR=1
- GOTO EndScript
- :ErrPING
- ECHO ERROR: Cannot find PING.exe.
- SET HAVEERROR=1
- GOTO EndScript
- :ErrSTART
- ECHO Error: Missing START.exe
- SET HAVEERROR=1
- GOTO EndScript
-
- :ErrMissingIDSEnvVar
- ECHO ERROR: Please set INFORMIXDIR, INFORMIXSERVER and ONCONFIG.
- SET HAVEERROR=1
- GOTO EndScript
- :PrintUsage
- ECHO.
- ECHO Usage:
- ECHO onshutdown [timeout]
- ECHO timeout: Time in seconds onshutdown should
- ECHO wait for onmode -ky to complete
- ECHO Default = 30 secs
- ECHO Minimum = 10 secs
- ECHO Maximum = 60 secs
- ECHO.
- SET HAVEERROR=1
- GOTO EndScript
- :EndScript
- ECHO Finished %PROG%
- GOTO Done
- :Done
- REM Done
- IF %HAVEERROR% == 1 (
- EXIT /B %FAILURE%
- ) ELSE (
- EXIT /B %SUCCESS%
- )
|