alnoda-workspaces/workspaces/base-workspace/Cronicle-0.8.61/bin/control.sh
2021-07-30 12:18:29 +00:00

220 lines
6.4 KiB
Bash
Executable file

#!/bin/sh
#
# Control script designed to allow an easy command line interface
# to controlling any binary. Written by Marc Slemko, 1997/08/23
# Modified for Cronicle, Joe Huckaby, 2015/08/11
#
# The exit codes returned are:
# 0 - operation completed successfully
# 2 - usage error
# 3 - binary could not be started
# 4 - binary could not be stopped
# 8 - configuration syntax error
#
# When multiple arguments are given, only the error from the _last_
# one is reported. Run "*ctl help" for usage info
#
#
# |||||||||||||||||||| START CONFIGURATION SECTION ||||||||||||||||||||
# -------------------- --------------------
#
# the name of your binary
NAME="Cronicle Daemon"
#
# home directory
HOMEDIR="$(dirname "$(cd -- "$(dirname "$0")" && (pwd -P 2>/dev/null || pwd))")"
cd $HOMEDIR
#
# the path to your binary, including options if necessary
BINARY="node $HOMEDIR/lib/main.js"
#
# the path to your PID file
PIDFILE=$HOMEDIR/logs/cronicled.pid
#
# -------------------- --------------------
# |||||||||||||||||||| END CONFIGURATION SECTION ||||||||||||||||||||
ERROR=0
ARGV="$@"
if [ "x$ARGV" = "x" ] ; then
ARGS="help"
fi
for ARG in $@ $ARGS
do
# check for pidfile
if [ -f $PIDFILE ] ; then
PID=`cat $PIDFILE`
if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null ; then
STATUS="$NAME running (pid $PID)"
RUNNING=1
else
STATUS="$NAME not running (pid $PID?)"
RUNNING=0
fi
else
STATUS="$NAME not running (no pid file)"
RUNNING=0
fi
case $ARG in
start)
if [ $RUNNING -eq 1 ]; then
echo "$ARG: $NAME already running (pid $PID)"
continue
fi
echo "$0 $ARG: Starting up $NAME..."
if $BINARY ; then
echo "$0 $ARG: $NAME started"
else
echo "$0 $ARG: $NAME could not be started"
ERROR=3
fi
;;
stop)
if [ $RUNNING -eq 0 ]; then
echo "$ARG: $STATUS"
continue
fi
if kill $PID ; then
while [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null ; do
sleep 1;
done
echo "$0 $ARG: $NAME stopped"
else
echo "$0 $ARG: $NAME could not be stopped"
ERROR=4
fi
;;
restart)
$0 stop start
;;
cycle)
$0 stop start
;;
status)
echo "$ARG: $STATUS"
;;
setup)
node $HOMEDIR/bin/storage-cli.js setup
exit
;;
maint)
node $HOMEDIR/bin/storage-cli.js maint $2
exit
;;
admin)
node $HOMEDIR/bin/storage-cli.js admin $2 $3
exit
;;
export)
node $HOMEDIR/bin/storage-cli.js export $2 $3 $4
exit
;;
import)
if [ $RUNNING -eq 1 ]; then
$0 stop
fi
node $HOMEDIR/bin/storage-cli.js import $2 $3 $4
exit
;;
upgrade)
node $HOMEDIR/bin/install.js $2 || exit 1
exit
;;
migrate)
node $HOMEDIR/bin/storage-migrate.js $2 $3 $4
exit
;;
version)
PACKAGE_VERSION=$(node -p -e "require('./package.json').version")
echo "$PACKAGE_VERSION"
exit
;;
*)
echo "usage: $0 (start|stop|cycle|status|setup|maint|admin|export|import|upgrade|help)"
cat <<EOF
start - Starts $NAME.
stop - Stops $NAME and wait until it actually exits.
restart - Calls stop, then start (hard restart).
status - Checks whether $NAME is currently running.
setup - Runs initial storage setup.
maint - Runs daily maintenance routine.
admin - Creates new emergency admin account (specify user / pass).
export - Exports data to specified file.
import - Imports data from specified file.
upgrade - Upgrades $NAME to the latest stable (or specify version).
migrate - Migrate storage data to another location.
version - Outputs the current $NAME package version.
help - Displays this screen.
EOF
ERROR=2
;;
esac
done
exit $ERROR
## ====================================================================
## The Apache Software License, Version 1.1
##
## Copyright (c) 2000 The Apache Software Foundation. All rights
## reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions
## are met:
##
## 1. Redistributions of source code must retain the above copyright
## notice, this list of conditions and the following disclaimer.
##
## 2. Redistributions in binary form must reproduce the above copyright
## notice, this list of conditions and the following disclaimer in
## the documentation and/or other materials provided with the
## distribution.
##
## 3. The end-user documentation included with the redistribution,
## if any, must include the following acknowledgment:
## "This product includes software developed by the
## Apache Software Foundation (http://www.apache.org/)."
## Alternately, this acknowledgment may appear in the software itself,
## if and wherever such third-party acknowledgments normally appear.
##
## 4. The names "Apache" and "Apache Software Foundation" must
## not be used to endorse or promote products derived from this
## software without prior written permission. For written
## permission, please contact apache@apache.org.
##
## 5. Products derived from this software may not be called "Apache",
## nor may "Apache" appear in their name, without prior written
## permission of the Apache Software Foundation.
##
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
## OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
## DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
## ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
## SUCH DAMAGE.
## ====================================================================
##
## This software consists of voluntary contributions made by many
## individuals on behalf of the Apache Software Foundation. For more
## information on the Apache Software Foundation, please see
## <http://www.apache.org/>.
##
## Portions of this software are based upon public domain software
## originally written at the National Center for Supercomputing Applications,
## University of Illinois, Urbana-Champaign.
##
#