| 
 | 
| 
Back
Midas
Rome
Roody
Rootana
 | 
|   Midas DAQ System  | 
Not logged in | 
  | 
   | 
| 
Message ID: 451
    Entry time: 02 Mar 2008
 |  
| Author: | 
Exaos Lee  | 
 | Topic: | 
Suggestion  | 
 | Subject: | 
Bash Script for handling an experiment code  | 
 
  |  
 
 | 
I rearanged the files in "examples/experiment" as the attached "mtest_exp.zip". I re-write the start/stop script as the attached "daq.sh". The script "daq.sh" can be re-used for many experiments. The user only needs to provide an script "daq_env.sh" as the following containing the settings for the experiment environment.
#!/bin/sh
[ ! "$MIDASSYS" ] && MIDASSYS=/opt/MIDAS.PSI/Version/Current
[ ! "$HTTPPORT" ] && HTTPPORT=8080
[ ! "$SRVHOST" ]  && SRVHOST=localhost
LOGGER=${MIDASSYS}/bin/mlogger
EXPPATH=/home/das/online/test
CODEPATH=${EXPPATH}/code
LOGGER=${MIDASSYS}/bin/mlogger
PROG_FE=${CODEPATH}/frontend
PROG_ANA=${CODEPATH}/analyzer
if [ ! "$MIDAS_EXPTAB" ]; then
	MIDAS_DIR=${EXPPATH}
else
	MIDAS_EXPT_NAME="test"
fi
 
I hope this can be helpful.   There seem to be some problems such as: 
1. When several experiments are defined, the $LOGGER may be not the one used for this exp. 
2. The "pidof" may be not in some platforms, so this script is limited. 
 
Hope anybody can help me to improve it for general purpose. All my best! | 
 | 
#!/bin/sh
DAQ_SETENV=./daq_env.sh
[ -f "${DAQ_SETENV}" ] && source ${DAQ_SETENV}
### Start ....
start() 
{
    #### Running mserver
    pidmsrv=`pidof mserver`
    if [ ! "$pidmsrv" ]; then
	echo Starting mserver ...
	$MIDASSYS/bin/mserver -D -m
	pidmhttpd=`pidof mhttpd`
	[ "$pidmhttpd" ] && kill -9 $pidmhttpd
	echo Starting mhttpd ...
	$MIDASSYS/bin/mhttpd -h localhost -D -p $HTTPPORT
    fi
    #### Change work directory
    OLD_DIR=`pwd`
    cd ${EXPPATH}
    
    #### Running FE and Analyzer ...
    # Options for multi experiments running ...
    [ "$MIDAS_EXPTAB" ] && OPTIONS="-e $MIDAS_EXPT_NAME"
    $MIDASSYS/bin/odbedit ${OPTIONS} -c clean
    sleep 2
    echo Starting frontend session: ${PROG_FE} ...
    ${PROG_FE}  ${OPTIONS} -D
    echo Starting analyzer session: ${PROG_ANA} ...
    ${PROG_ANA} ${OPTIONS} -D
    sleep 1
    echo Starting logger utility: mlogger ...
    ${LOGGER} ${OPTIONS} -D
    cat <<EOF
Please point your web browser to http://localhost:$HTTPPORT
Or run: firefox http://localhost:$HTTPPORT
To look at live histograms, run: roody -Hlocalhost
EOF
    #### Resume old directory
    cd ${OLD_DIR}
}
### Stop ....
stop() 
{
    #### Kill Running sessions
    pidlog=`pidof $(basename ${LOGGER})`
    pidfe=` pidof $(basename ${PROG_FE})`
    pidana=`pidof $(basename ${PROG_ANA})`
    [ "$pidlog" ] && kill $pidlog
    [ "$pidfe"  ] && kill $pidfe
    [ "$pidana" ] && kill $pidana
}
### Status ....
status()
{
    echo "MIDAS Server (mserver): "
    pid=`pidof mserver`
    echo_status $pid
    echo "MIDAS HTTPD Server (mhttpd): "
    pid=`pidof mhttpd`
    echo_status $pid
    echo "Logger (${LOGGER}): "
    pid=`pidof $(basename ${LOGGER})`
    echo_status $pid
    echo "Frontend Code ($PROG_FE): "
    pid=`pidof $(basename ${PROG_FE})`
    echo_status $pid
    echo "Analyzer Code ($PROG_ANA): "
    pid=`pidof $(basename ${PROG_ANA})`
    echo_status $pid
}
echo_status()
{
    if [ "$1" ]; then
	echo -e "\t Running as $1."
    else
	echo -e "\t Not Running!"
    fi
}
### Usage ....
usage()
{
    echo "Usage: $0 [<start>|<stop>|<restart>|<status>]"
}
###################### Main Procedure ###########################
case "${1:-''}" in 
    "start")
	start
	;;
    "stop")
	stop
	;;
    "restart")
	stop
	start
	;;
    "status")
	status
	;;
    *)
	usage
	;;
esac
#########################  The END  #############################
 | 
 |