Issue 126: started on nohup

git-svn-id: http://jclouds.googlecode.com/svn/trunk@2361 3d8758e0-26b5-11de-8745-db77d3ebf521
This commit is contained in:
adrian.f.cole 2009-12-02 08:13:28 +00:00
parent c98245a66c
commit 777202cec2
4 changed files with 74 additions and 0 deletions

View File

@ -0,0 +1,29 @@
:forget
SETLOCAL
set FOUND_PID=
set NEXT_MINUTE=
set INSTANCE_NAME=%1
shift
set SCRIPT=%1
shift
set LOG_DIR=%1
shift
CALL :findProcess %INSTANCE_NAME%
if defined FOUND_PID (
echo %INSTANCE_NAME% already running pid [%FOUND_PID%]
) else (
CALL :nextMinute
set _DATE=%DATE:~4%
set CMD=schtasks /create /sd %_DATE% /tn %INSTANCE_NAME% /ru System /tr "cmd /c title %INSTANCE_NAME%&%SCRIPT% >%LOG_DIR%\stdout.log 2>%LOG_DIR%\stderr.log" /sc:once /st %NEXT_MINUTE%
echo %INSTANCE_NAME% will start at %NEXT_MINUTE%
set SECONDS=%TIME:~6,2%
set /a SECOND=60-SECONDS
%CMD% >NUL
ping -n %SECONDS% 127.0.0.1 > NUL 2>&1
CALL :findProcess %INSTANCE_NAME%
if not defined FOUND_PID (
set EXCEPTION=%INSTANCE_NAME% did not start
abort
)
)
exit /b 0

View File

@ -0,0 +1,20 @@
function forget {
unset FOUND_PID;
[ $# -eq 3 ] || {
abort "forget requires parameters INSTANCE_NAME SCRIPT LOG_DIR"
return 1
}
local INSTANCE_NAME="$1"; shift
local SCRIPT="$1"; shift
local LOG_DIR="$1"; shift
mkdir -p $LOG_DIR
findPid $INSTANCE_NAME
[ -n "$FOUND_PID" ] && {
echo $INSTANCE_NAME already running pid [$FOUND_PID]
} || {
nohup $SCRIPT >$LOG_DIR/stdout.log 2>$LOG_DIR/stderr.log &
findPid $INSTANCE_NAME
[ -n "$FOUND_PID" ] || abort "$INSTANCE_NAME did not start"
}
return 0
}

View File

@ -0,0 +1,16 @@
:nextMinute
SETLOCAL
set HOURS=%TIME:~0,2%
set MINUTES=%TIME:~3,2%
set /a HOURS=%HOURS%
set /a MINUTES+=1
if %MINUTES% EQU 60 (set MINUTES=0&set /a HOURS+=1)
if %HOURS% EQU 24 (set HOURS=0)
if %HOURS% LSS 10 set HOURS=0%HOURS%
if %MINUTES% LSS 10 set MINUTES=0%MINUTES%
ENDLOCAL&SET NEXT_MINUTE=%HOURS%:%MINUTES%:00
exit /b 0

View File

@ -0,0 +1,9 @@
:abort
CALL :findProcess %INSTANCE_NAME%
if defined _pid (
echo stopping %INSTANCE_NAME%
TASKKILL /F /T /PID %FOUND_PID% >NUL
)
schtasks /end /tn %INSTANCE_NAME% >NUL 2>NUL
schtasks /delete /tn %INSTANCE_NAME% /F >NUL 2>NUL
exit /b 0