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