teichmann@5118: #!/bin/bash teichmann@5118: # teichmann@5118: ### BEGIN INIT INFO teichmann@5118: # Provides: d4e-server teichmann@5118: # Required-Start: $network $syslog $remote_fs teichmann@5118: # Should-Start: $named $syslog $time teichmann@5118: # Required-Stop: $network $syslog teichmann@5118: # Should-Stop: $named $syslog $time teichmann@5118: # Default-Start: 3 5 teichmann@5118: # Default-Stop: 0 1 2 6 teichmann@5118: # Short-Description: Dive4Elements server teichmann@5118: # Description: Start Dive4Elements server teichmann@5118: ### END INIT INFO teichmann@5118: teichmann@5118: RUNAS=flys aheinecke@7738: START_SCRIPT="/opt/flys/d4e-start" aheinecke@7738: NAME="$(basename $0)" aheinecke@7738: SHUTDOWN_WAIT="30" teichmann@5118: aheinecke@7738: export FLYSDIR="/opt/flys/current/server" aheinecke@7738: aheinecke@7738: unset ISBOOT aheinecke@7738: if [ "${NAME:0:1}" = "S" -o "${NAME:0:1}" = "K" ]; then aheinecke@7738: NAME="${NAME:3}" aheinecke@7738: ISBOOT="1" aheinecke@7738: fi aheinecke@7738: aheinecke@7738: # remove SUSE's rc name aheinecke@7738: if [ "${NAME:0:2}" = "rc" ]; then aheinecke@7738: NAME="${NAME:2}" aheinecke@7738: fi teichmann@5118: teichmann@5118: aheinecke@7738: export LOGFILE=/var/log/d4e-river.log aheinecke@7738: export ARGS="-Xmx256m \ teichmann@5118: -server \ teichmann@5118: -Djava.awt.headless=true \ teichmann@5118: -Dflys.datacage.recommendations.development=false \ aheinecke@7738: -Djava.io.tmpdir=$FLYSDIR/cache \ aheinecke@7738: -Dflys.backend.enablejmx=true \ teichmann@5118: -Dflys.uesk.keep.artifactsdir=false \ aheinecke@8061: -Dwsplgen.bin.path=$FLYSDIR/bin/wsplgen \ teichmann@5118: -Dwsplgen.log.output=false \ aheinecke@7738: -Dlog4j.configuration=file://$FLYSDIR/conf/log4j.properties \ aheinecke@7738: -Dartifact.database.dir=$FLYSDIR/conf" aheinecke@7738: export MAINCLASS=org.dive4elements.artifactdatabase.App teichmann@5118: teichmann@5118: # For SELinux we need to use 'runuser' not 'su' teichmann@5118: if [ -x "/sbin/runuser" ]; then teichmann@5118: SU="/sbin/runuser" teichmann@5118: else aheinecke@7738: SU="/bin/su -m" teichmann@5118: fi teichmann@5118: aheinecke@7738: # pulled from RHEL4 /etc/rc.d/init.d/functions aheinecke@7738: function checkpid() { aheinecke@7738: local i aheinecke@7738: for i in $* ; do aheinecke@7738: if [ -d "/proc/${i}" ]; then aheinecke@7738: return 0 aheinecke@7738: fi aheinecke@7738: done aheinecke@7738: return 1 aheinecke@7738: } aheinecke@7738: aheinecke@7738: . /etc/rc.status aheinecke@7738: rc_reset aheinecke@7738: aheinecke@7738: function start() { aheinecke@7738: echo -n "Starting D4E-river server... " aheinecke@7738: if [ -f "/var/lock/subsys/${NAME}" ] ; then aheinecke@7738: if [ -f "/var/run/${NAME}.pid" ]; then aheinecke@7738: read kpid < /var/run/${NAME}.pid aheinecke@7738: if checkpid $kpid 2>&1; then aheinecke@7738: echo "$NAME process already running with pid $kpid" aheinecke@7738: rc_failed 0 aheinecke@7738: exit aheinecke@7738: else aheinecke@7738: echo "lock file found but no process running for pid $kpid, continuing" aheinecke@7738: rc_failed 7 aheinecke@7738: fi aheinecke@7738: fi aheinecke@7738: fi aheinecke@7738: aheinecke@7738: export D4E_PID="/var/run/${NAME}.pid" aheinecke@7738: touch $D4E_PID aheinecke@7738: chown $RUNAS $D4E_PID aheinecke@7738: touch $LOGFILE aheinecke@7738: chown $RUNAS $LOGFILE aheinecke@7738: aheinecke@7738: for l in `find "$FLYSDIR/bin/lib" -name \*.jar -print`; do aheinecke@7738: CLASSPATH=$CLASSPATH:$l aheinecke@7738: done aheinecke@7738: aheinecke@7738: export CLASSPATH aheinecke@7738: aheinecke@7738: $SU $RUNAS -c "$START_SCRIPT" aheinecke@7738: #>> $LOGFILE 2>&1 aheinecke@7738: RETVAL="$?" aheinecke@7738: if [ "$RETVAL" -eq 0 ]; then aheinecke@7738: rc_failed 0 aheinecke@7738: touch /var/lock/subsys/${NAME} aheinecke@7738: else aheinecke@7738: rc_failed 7 aheinecke@7738: fi aheinecke@7738: rc_status -v aheinecke@7738: } aheinecke@7738: aheinecke@7738: function stop() { aheinecke@7738: echo -n "Shutting down D4E-River" aheinecke@7738: if [ -f "/var/lock/subsys/${NAME}" ]; then aheinecke@7738: count="0" aheinecke@7738: if [ -f "/var/run/${NAME}.pid" ]; then aheinecke@7738: read kpid < /var/run/${NAME}.pid aheinecke@7738: kill $kpid aheinecke@7738: until [ "$(ps --pid $kpid | grep -c $kpid)" -eq "0" ] || \ aheinecke@7738: [ "$count" -gt "$SHUTDOWN_WAIT" ]; do aheinecke@7738: if [ "$SHUTDOWN_VERBOSE" = "true" ]; then aheinecke@7738: echo -n -e "\nwaiting for processes $kpid to exit" aheinecke@7738: fi aheinecke@7738: sleep 1 aheinecke@7738: let count="${count}+1" aheinecke@7738: done aheinecke@7738: if [ "$count" -gt "$SHUTDOWN_WAIT" ]; then aheinecke@7738: if [ "$SHUTDOWN_VERBOSE" = "true" ]; then aheinecke@7738: echo -n -e "\nkilling processes which didn't stop" aheinecke@7738: echo -n -e "after " aheinecke@7738: echo -n "$SHUTDOWN_WAIT seconds" aheinecke@7738: fi aheinecke@7738: kill -9 $kpid aheinecke@7738: fi aheinecke@7738: rc_failed 0 aheinecke@7738: if [ "$count" -gt "0" ]; then aheinecke@7738: echo -n -e "\n" aheinecke@7738: fi aheinecke@7738: fi aheinecke@7738: rm -f /var/lock/subsys/${NAME} /var/run/${NAME}.pid aheinecke@7738: fi aheinecke@7738: rc_status -v aheinecke@7738: } aheinecke@7738: aheinecke@7738: aheinecke@7738: aheinecke@7738: teichmann@5118: case "$1" in teichmann@5118: start) aheinecke@7738: start teichmann@5118: ;; teichmann@5118: stop) aheinecke@7738: stop teichmann@5118: ;; teichmann@5118: restart) teichmann@5118: $0 stop && $0 start teichmann@5118: ;; teichmann@5118: *) teichmann@5118: echo "Usage: $0 [start|stop|restart]" teichmann@5118: esac teichmann@5118: