#!/bin/sh APP=argeo JVM=java BIN_DIR=`dirname "$0"` BASE_DIR=$BIN_DIR/.. # Directories and files CONF_DIR=$BASE_DIR/etc/$APP CONF_DIRS=$CONF_DIR/conf.d BASE_CONFIG_INI=$BASE_DIR/share/$APP/config.ini EXEC_DIR=. DATA_DIR=$EXEC_DIR/data CONF_RW=$EXEC_DIR/state CONFIG_INI=$CONF_RW/config.ini OSGI_INSTALL_AREA=$BASE_DIR/share/osgi/boot OSGI_FRAMEWORK=$OSGI_INSTALL_AREA/org.eclipse.osgi.jar # Overwrite variables if [ -f $CONF_DIR/settings.sh ];then . $CONF_DIR/settings.sh fi RETVAL=0 start() { mkdir -p $CONF_RW mkdir -p $DATA_DIR # Merge config files printf "## Equinox configuration - Generated by argeo-cms ##\n\n" > $CONFIG_INI cat $BASE_CONFIG_INI >> $CONFIG_INI printf "\n##\n## $CONF_DIR/$APP.ini\n##\n\n" >> $CONFIG_INI cat $CONF_DIR/$APP.ini >> $CONFIG_INI for file in `ls -v $CONF_DIRS/*.ini`; do printf "\n##\n## $file\n##\n\n" >> $CONFIG_INI cat $file >> $CONFIG_INI done; cd $EXEC_DIR $JVM \ -Dlog4j.configuration="file:$CONF_DIR/log4j.properties" \ $JAVA_OPTS -jar $OSGI_FRAMEWORK \ -configuration "$CONF_RW" \ -data "$DATA_DIR" } reload() { echo Not yet implemented } stop() { if [ -f $PID_FILE ];then PID=`cat $PID_FILE` kill -0 $PID &> /dev/null PID_EXISTS=$? if [ $PID_EXISTS -ne 0 ]; then echo Dead $APP process with pid $PID, removing $PID_FILE rm -f $PID_FILE RETVAL=1 return $RETVAL fi else echo $APP is not running RETVAL=1 return $RETVAL fi # notifies application by removing the shutdown file # rm -f $SHUTDOWN_FILE kill $PID # wait 10 min for application to shutdown, then kill it TIMEOUT=$((10*60)) BEGIN=$(date +%s) while kill -0 $PID &> /dev/null do sleep 1 NOW=$(date +%s) DURATION=$(($NOW-$BEGIN)) if [ $DURATION -gt $TIMEOUT ]; then kill -9 $PID echo Forcibly killed $APP with pid $PID RETVAL=1 fi done # remove pid file rm -f $PID_FILE return $RETVAL } status() { if [ -f $PID_FILE ];then PID=`cat $PID_FILE` else echo $APP is not running return $RETVAL fi kill -0 $PID &> /dev/null PID_EXISTS=$? if [ $PID_EXISTS -eq 0 ]; then echo $APP is running with pid $PID ... else echo No $APP process with pid $PID, removing $PID_FILE rm -f $PID_FILE fi return $RETVAL } # main case "$1" in start) start ;; reload) reload ;; stop) stop ;; status) status ;; *) start ;; esac