X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=dist%2Fargeo-node%2Fbase%2Fbin%2Fargeo-cms;fp=dist%2Fargeo-node%2Fbase%2Fbin%2Fargeo-cms;h=9819b7e772950d17c8671bcf8f909800dc1ede1f;hb=1091271b89f2d12e9898e01f6639c48831b1bc4b;hp=0000000000000000000000000000000000000000;hpb=1c0c3d0b0476adfc6489bb08d96daf1e74aea4b3;p=lgpl%2Fargeo-commons.git diff --git a/dist/argeo-node/base/bin/argeo-cms b/dist/argeo-node/base/bin/argeo-cms new file mode 100755 index 000000000..9819b7e77 --- /dev/null +++ b/dist/argeo-node/base/bin/argeo-cms @@ -0,0 +1,133 @@ +#!/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_POLICY_ALL=/usr/share/$APP/all.policy +BASE_CONFIG_INI=$BASE_DIR/share/$APP/config.ini + +#EXEC_DIR=$BASE_DIR/var/lib/$APP +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 /usr/sbin/nodectl ##\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 + ;; + *) + echo $"Usage: $0 {start|stop|status}" + exit 1 +esac \ No newline at end of file