Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-10 08:39:08

0001 #!/bin/sh
0002 #
0003 # chkconfig: - 85 15
0004 #
0005 # description: Panda server daemon
0006 # processname: python
0007 # config: /etc/panda/panda_server.cfg
0008 # pidfile: /var/log/panda/panda_daemon.pid
0009 #
0010 
0011 # When multiple arguments are given, only the error from the _last_
0012 # one is reported.
0013 #
0014 ARGV="$@"
0015 #
0016 # |||||||||||||||||||| START CONFIGURATION SECTION  ||||||||||||||||||||
0017 # --------------------                              --------------------
0018 #
0019 
0020 # virtual env activation
0021 @@virtual_env_setup@@
0022 
0023 # the path to application
0024 PROGNAME='python -u @@install_purelib@@/pandaserver/daemons/master.py'
0025 
0026 # pid and lock files
0027 if [[ -z "${PANDA_LOCK_DIR}" ]]; then
0028     PIDFILE='/var/log/panda/panda_daemon.pid'
0029     LOCKFILE='/var/lock/subsys/panda_daemon'
0030 else
0031     PIDFILE=${PANDA_LOCK_DIR}'/panda_daemon.pid'
0032     LOCKFILE=${PANDA_LOCK_DIR}'/panda_daemon.lock'
0033 fi
0034 
0035 # log files
0036 LOGSTDOUT='/var/log/panda/panda_daemon_stdout.log'
0037 LOGSTDERR='/var/log/panda/panda_daemon_stderr.log'
0038 
0039 # Source panda server env variables
0040 if [ -r /etc/sysconfig/panda_server ]; then
0041    . /etc/sysconfig/panda_server
0042 fi
0043 
0044 
0045 # check if PanDA Daemon is enabled in config
0046 function check_enable() {
0047   command_to_check='from pandaserver.config import daemon_config; print(daemon_config.enable)'
0048   return_string=$(python -u -c "${command_to_check}")
0049   if [ "$return_string" == "True" ]; then
0050     return 0
0051   else
0052     return 1
0053   fi
0054 }
0055 
0056 
0057 # main
0058 ERROR=0
0059 if [ "x$ARGV" = "x" ] ; then
0060     ARGV="-h"
0061 fi
0062 
0063 case $ARGV in
0064 start)
0065   check_enable
0066   if [ $? -ne 0 ]; then
0067     echo "PanDA Daemon is not enabled. Do nothing..."
0068     exit $ERROR
0069   fi
0070   if [ -f $LOCKFILE ]; then
0071     echo "ERROR: PanDA Daemon is already running with lockfile:$LOCKFILE"
0072   else
0073     echo "start PanDA Daemon"
0074     for itry in `seq 1 5`
0075     do
0076       echo "trying $itry"
0077       $PROGNAME --pidfile $PIDFILE >> $LOGSTDOUT 2>> $LOGSTDERR
0078       touch $LOCKFILE
0079       sleep 5
0080       ps -p `cat $PIDFILE` > /dev/null
0081       ERROR=$?
0082       if [ $ERROR -eq 0 ]; then
0083                 echo "succeeded"
0084                 break
0085       else
0086                 echo "failed with $ERROR"
0087                 rm -f $LOCKFILE
0088       fi
0089     done
0090   fi
0091     ;;
0092 stop)
0093     echo "stop PanDA Daemon"
0094     for itry in `seq 1 5`
0095     do
0096       echo "trying $itry"
0097       if [ ! -f $PIDFILE ]; then
0098         echo "pidfile $PIDFILE does not exist; skipped"
0099         rm -f $LOCKFILE
0100         ERROR=2
0101         exit $ERROR
0102       fi
0103       if [[ $itry -gt 3 ]]; then
0104         echo "try force kill..."
0105         pkill -9 -P `cat $PIDFILE`
0106       else
0107         kill `cat $PIDFILE`
0108       fi
0109       sleep 5
0110       ps -p `cat $PIDFILE` > /dev/null
0111       ERROR=$?
0112       if [ $ERROR -eq 1 ]; then
0113         pkill -9 -P `cat $PIDFILE`
0114         echo "succeeded"
0115         rm -f $PIDFILE ${PIDFILE}.lock $LOCKFILE
0116         break
0117       else
0118         echo "failed with $ERROR"
0119         sleep 5
0120       fi
0121     done
0122     ;;
0123 *)
0124     echo "ERROR: unknown command $ARGV"
0125     ERROR=1
0126 esac
0127 
0128 exit $ERROR