webroot/scripts/run_dispatched

42 lines
884 B
Bash

#!/bin/sh
# vim: syn=sh ts=4 sts=4 sw=4 ff=unix smartindent expandtab
#set default script interval to 5 minutes
: ${SCRIPT_INTERVAL:=300}
: ${TASK_SLEEP_TIME:=2}
: ${TASK_DIR:=${HOME}/.tasks}
: ${TASK_WAITING_DIR:=${TASK_DIR}/waiting}
: ${TASK_RUNNING_DIR:=${TASK_DIR}/running}
$start=`time +%s`
$end=$(( $start + $SCRIPT_INTERVAL ))
if [ ! -d "$TASK_DIR" ]; then
mkdir -p "$TASK_DIR"
fi
if [ ! -d "$TASK_WAITING_DIR" ]; then
mkdir -p "$TASK_WAITING_DIR"
fi
if [ ! -d "$TASK_RUNNING_DIR" ]; then
mkdir -p "$TASK_RUNNING_DIR"
if
run_task() {
task="$1"
$task
rm $task
}
while [ `time +%s` -lt $end ]; do
for waiting in `ls ${TASK_WAITING_DIR}`; do
if [ -x $waiting ]; then
task=${TASK_RUNNING_DIR}/`basename $waiting`
mv $waiting $task
run_task "$task" &
fi
done
sleep $TASK_SLEEP_TIME
done