#!/bin/sh # Small wait script based on watch_activities scripts. # The goal is keep running until the activities. function show_help ( ) { script_name=`basename $0` echo """ Usage: $script_name [interval seconds] [timeout in seconds] Interval is default 5. Timeout default is 600 seconds. mysql_opt are default mysql command line options. Put them in quotes if more than one option is passed. Typical usage: $script_name erp5 $script_name \"-h remotehost -u user erp5remote\" 3 """ } MYSQL_OPT=$1 INTERVAL=$2 TIMEOUT=$3 MYSQL_BIN=$MYSQL if [ "$MYSQL_BIN" == "" ] ; then MYSQL_BIN='mysql' fi if [ "$MYSQL_OPT" == "" ] ; then show_help exit 1 fi if [ "$INTERVAL" == "" ] ; then INTERVAL=5 fi if [ "$TIMEOUT" == "" ] ; then TIMEOUT=600 fi TIME=0 while true do MESSAGE_VALUE=`echo "SELECT count(*) AS message_count FROM message;" | $MYSQL_BIN $MYSQL_OPT | grep -v message` MESSAGE_QUEUE_VALUE=`echo "SELECT count(*) AS message_count FROM message_queue;" | $MYSQL_BIN $MYSQL_OPT | grep -v message` if [ "$MESSAGE_VALUE" == "0" -a "$MESSAGE_QUEUE_VALUE" == 0 ] ; then exit 0 fi sleep $INTERVAL; TIME="`expr $TIME + $INTERVAL`" if [ $TIME -gt $TIMEOUT ] then echo "Messages" echo "SELECT path, processing_node, method_id AS message_count FROM message;" | $MYSQL_BIN $MYSQL_OPT echo "Messages Queue" echo "SELECT path, processing_node, method_id AS message_count FROM message_queue;" | $MYSQL_BIN $MYSQL_OPT echo "Timeout" exit 1 fi done