Zaseknuti cron jobu a neprovedeni ostatnich
Jan Fuchs
fuky na sunstel.asu.cas.cz
Úterý Prosinec 18 01:29:11 CET 2007
Zdravím,
co to vyřešit např. takto:
$ cat run.sh
#!/bin/bash
if [ "$#" -ne 2 ]; then
echo "Usage: $0 program timeout"
exit 1
fi
PROGRAM="$1"
TIMEOUT="$2"
STEP=1
TIMEOUT_SIGKILL=0
$PROGRAM &
PID_PROGRAM=$!
while [ $(ps -p $PID_PROGRAM -o pid | wc -l) -ge 2 ]; do
sleep $STEP
TIMEOUT=$(($TIMEOUT-$STEP))
if [ "$TIMEOUT" -le 0 ]; then
kill -SIGTERM $PID_PROGRAM
ERROR=1
sleep $TIMEOUT_SIGKILL
if [ $(ps -p $PID_PROGRAM -o pid | wc -l) -ge 2 ]; then
kill -SIGKILL $PID_PROGRAM
fi
fi
done
if [ "$ERROR" == 1 ]; then
echo "Exit failure"
exit 1
fi
echo "Exit success"
exit 0
$ ./run.sh "sleep 3" 1
./run.sh: line 29: 8762 Ukončen (SIGTERM) $PROGRAM
Exit failure
$ ./run.sh "sleep 3" 1000
Exit success
S pozdravem Jan Fuchs
18. Dec (Tuesday) v 00:43:44 CET 2007, dast na panelnet.cz napsal(a):
> treba cekat na job maximalne 30 min apod.?
--
/**************************************************************
* _ Žádný program není bezchybný, dokonalý ani nejlepší, *
* °v° to samé platí i o lidech a nejen o nich. *
* /(_)\ -- Jan Fuchs -- *
* ^ ^ *
* http://www.fuky.org ICQ: 200692177 *
**************************************************************/
Další informace o konferenci Linux