mirror of
https://github.com/bluxmit/alnoda-workspaces.git
synced 2024-09-19 03:07:10 +12:00
220 lines
6.4 KiB
Bash
220 lines
6.4 KiB
Bash
|
#!/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.
|
||
|
##
|
||
|
#
|