42 lines
884 B
Bash
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
|
|
|