7 # ----------------------------------------------------------------------------------------
8 # Simple desktop batch queue processor.
10 # The batch queue is defined by a standard FIFO and
11 # the entries in the queue are processed line-by-line.
12 # Each entry is executed as a separate process in the background,
13 # commonly referred to as a job.
14 # The number of jobs that can simultaneously run is limited by the queue size.
15 # The batch queue can be terminated by submitting a job with contents "exit".
17 # The batch queue may also be an existing regular file.
18 # The entries in the queue are processed as normal but
19 # the batch queue will terminate when the end-of-file is reached.
21 # A job can be submitted using the puts_queue function (see qlib.sh or qlib.csh).
22 # A series of joint commands can be submitted using a sequence of
23 # calls to put_queue, terminated by a single puts_queue call.
24 # ----------------------------------------------------------------------------------------
26 if [ -z $JPP_DIR ]; then
27 echo "Variable JPP_DIR undefined."
31 source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
34 set_variable: DEBUG MKQUEUE_DEBUG 3
35 set_variable QUEUE_NAME ${TMPDIR:-/tmp}/queue # default name of queue
36 set_variable QUEUE_SIZE 1 # default size of queue
37 set_variable COMMAND mkqueue.sh
38 set_variable SLEEP_TIME 1s # sleep time
41 print -u2 "$script [queue name [queue size]] <option>"
42 print -u2 "Possible options: start, stop, continue, restart."
47 3) set_variable QUEUE_SIZE $argv[2];&
48 2) set_variable QUEUE_NAME $argv[1];&
49 1) set_variable OPTION $argv[-1];;
50 *) fatal "Wrong number of options.";;
53 if ( is_CCLyon ); then
54 fatal "This batch queue processor is intended for use on a desktop."
57 if (( $QUEUE_SIZE < 1 )); then
58 fatal "Invalid queue size $QUEUE_SIZE."
61 if [[ $OPTION != "start" && $OPTION != "stop" && $OPTION != "continue" && $OPTION != "restart" ]]; then
62 fatal "Invalid option $OPTION."
65 if [[ $OPTION == "stop" || $OPTION == "restart" ]]; then
67 PID=(`get_pid $COMMAND`)
71 if [[ -n $PID ]]; then
72 notice "Stop $COMMAND."
76 rm -f $QUEUE_NAME # remove FIFO
78 OPTION=${OPTION/restart/start}
80 elif [[ $OPTION == "continue" ]]; then
82 PID=(`get_pid $COMMAND`)
86 if [[ -n $PID ]]; then
87 notice "$script is running with PID(s) $PID"
94 if [[ $OPTION = "start" ]]; then
96 notice "Start batch queue ${QUEUE_NAME} >& ${QUEUE_NAME}_log"
98 trap "" HUP # trap hangup
100 queue $QUEUE_NAME $QUEUE_SIZE $SLEEP_TIME >& ${QUEUE_NAME}_log &
102 while [[ ! -e $QUEUE_NAME ]]; do