Difference between revisions of "Seon Core init script"
From Seon
| Line 9: | Line 9: | ||
# Default-Stop: 0 1 2 6 | # Default-Stop: 0 1 2 6 | ||
# Short-Description: Seon | # Short-Description: Seon | ||
| − | # Description: Start and stop Seon daemons | + | # Description: Start and stop Seon daemons, update Seon |
### END INIT INFO | ### END INIT INFO | ||
| Line 21: | Line 21: | ||
. $Seon_CONFIG | . $Seon_CONFIG | ||
| − | # retrieve | + | # retrieve directories and settings |
Seon_BINDIR=`echo "SELECT value FROM ${TABLEPREFIX}configuration WHERE name='bin_directory'" | $MYSQLCLIENT --silent --user=$DB_USER --password=$DB_PASS --host=$DB_HOST $DB_NAME` | Seon_BINDIR=`echo "SELECT value FROM ${TABLEPREFIX}configuration WHERE name='bin_directory'" | $MYSQLCLIENT --silent --user=$DB_USER --password=$DB_PASS --host=$DB_HOST $DB_NAME` | ||
Seon_ENTERPRISE=`echo "SELECT value FROM ${TABLEPREFIX}configuration WHERE name='seon_enterprise'" | $MYSQLCLIENT --silent --user=$DB_USER --password=$DB_PASS --host=$DB_HOST $DB_NAME` | Seon_ENTERPRISE=`echo "SELECT value FROM ${TABLEPREFIX}configuration WHERE name='seon_enterprise'" | $MYSQLCLIENT --silent --user=$DB_USER --password=$DB_PASS --host=$DB_HOST $DB_NAME` | ||
| + | Seon_WEBINTERFACE=`echo "SELECT value FROM ${TABLEPREFIX}configuration WHERE name='webinterface_path'" | $MYSQLCLIENT --silent --user=$DB_USER --password=$DB_PASS --host=$DB_HOST $DB_NAME` | ||
| + | LCDECHO=/usr/local/bin/lcdecho | ||
# Check for missing binaries (stale symlinks should not happen) | # Check for missing binaries (stale symlinks should not happen) | ||
| Line 29: | Line 31: | ||
SeonRD_BIN=$Seon_BINDIR/seonrd | SeonRD_BIN=$Seon_BINDIR/seonrd | ||
test -x $SeonRD_BIN || { echo "$SeonRD_BIN not installed"; | test -x $SeonRD_BIN || { echo "$SeonRD_BIN not installed"; | ||
| − | + | if [ "$1" = "stop" ]; then exit 0; | |
| − | + | else exit 5; fi; } | |
SeonSQD_BIN=$Seon_BINDIR/seonsqd | SeonSQD_BIN=$Seon_BINDIR/seonsqd | ||
| Line 44: | Line 46: | ||
if [ $Seon_ENTERPRISE -gt 0 ] | if [ $Seon_ENTERPRISE -gt 0 ] | ||
then | then | ||
| − | + | SeonCLIENTD_BIN=$Seon_BINDIR/seonclientd | |
| − | + | test -x $SeonCLIENTD_BIN || { echo "$SeonCLIENTD_BIN not installed"; | |
| − | + | if [ "$1" = "stop" ]; then exit 0; | |
| − | + | else exit 5; fi; } | |
fi | fi | ||
| + | |||
| + | SeonPOLL_BIN=$Seon_BINDIR/seonpoll | ||
| + | test -x $SeonPOLL_BIN || { echo "$SeonPOLL_BIN not installed"; | ||
| + | if [ "$1" = "stop" ]; then exit 0; | ||
| + | else exit 5; fi; } | ||
case "$1" in | case "$1" in | ||
start) | start) | ||
| − | + | # pre-check lockfile | |
| − | + | if [ -d $Seon_WEBINTERFACE ] | |
| − | + | then | |
| − | + | if [ -e ${Seon_WEBINTERFACE}/blank_install ] | |
| − | + | then | |
| − | + | # try to recover installation | |
| − | + | if [ -e /sd_card/seon.*.sql.gz ] | |
| − | if [ | ||
then | then | ||
| − | + | # backupfile exists, restore complete system | |
| − | + | /opt/seon/scripts/systemrestore_from_sd.sh && rm -f ${Seon_WEBINTERFACE}/blank_install | |
| + | else | ||
| + | echo "not starting Seon: blank installation, please configure Seon" | ||
| + | exit | ||
fi | fi | ||
| − | + | fi | |
| − | + | fi | |
| + | |||
| + | echo -n "Starting Seon " | ||
| + | echo -n "seonrd... " | ||
| + | $SeonRD_BIN | ||
| + | echo -n "seonsqd... " | ||
| + | $SeonSQD_BIN | ||
| + | echo -n "seondebugd... " | ||
| + | $SeonDEBUGD_BIN | ||
| + | if [ $Seon_ENTERPRISE -gt 0 ] | ||
| + | then | ||
| + | echo -n "seonclientd... " | ||
| + | $SeonCLIENTD_BIN | ||
| + | fi | ||
| + | echo "OK" | ||
| + | if [ -x $LCDECHO ] | ||
| + | then | ||
| + | $LCDECHO -a "Seon started" -t 10 & | ||
| + | fi | ||
| + | ;; | ||
stop) | stop) | ||
| − | + | echo -n "Shutting down Seon " | |
| − | + | echo -n "seonrd... " | |
| − | + | killall seonrd >/dev/null 2>&1 | |
| − | + | echo -n "seonsqd... " | |
| − | + | killall seonsqd >/dev/null 2>&1 | |
| − | + | echo -n "seondebugd... " | |
| − | + | killall seondebugd >/dev/null 2>&1 | |
| − | + | if [ $Seon_ENTERPRISE -gt 0 ] | |
| − | + | then | |
| − | + | echo -n "seonclientd... " | |
| − | + | killall seonclientd >/dev/null 2>&1 | |
| − | + | fi | |
| − | + | echo OK | |
| − | ;; | + | if [ -x $LCDECHO ] |
| + | then | ||
| + | $LCDECHO -a "Seon stopped" -t 10 & | ||
| + | fi | ||
| + | ;; | ||
status) | status) | ||
| − | + | echo -n "Checking for service Seon " | |
| − | + | pidof seonrd >/dev/null 2>&1 | |
| − | + | if [ $? -ne 0 ] | |
| − | + | then | |
| − | + | echo -n "... seonrd is not running" | |
| − | + | else | |
| − | + | echo -n "... seonrd OK " | |
| − | + | fi | |
| − | + | pidof seonsqd >/dev/null 2>&1 | |
| − | + | if [ $? -ne 0 ] | |
then | then | ||
| − | + | echo -n "... seonsqd is not running" | |
| − | + | else | |
| − | + | echo -n "... seonsqd OK " | |
fi | fi | ||
| − | + | pidof seondebugd > /dev/null 2>&1 | |
| − | + | if [ $? -ne 0 ] | |
then | then | ||
| − | + | echo "... seondebugd is not running" | |
| − | + | else | |
| − | + | echo -n "... seondebugd OK " | |
fi | fi | ||
| − | + | if [ $Seon_ENTERPRISE -gt 0 ] | |
| + | then | ||
| + | pidof seonclientd >/dev/null 2>&1 | ||
| + | if [ $? -ne 0 ] | ||
| + | then | ||
| + | echo "... seonclientd is not running" | ||
| + | else | ||
| + | echo "... seonclientd OK " | ||
| + | fi | ||
| + | else | ||
| + | echo "" | ||
| + | fi | ||
| + | ;; | ||
| + | update) | ||
| + | echo -n "Initiating Seon update... " | ||
| + | $SeonPOLL_BIN Seon-Update | ||
| + | if [ -x $LCDECHO ] | ||
then | then | ||
| − | + | $LCDECHO -a "Seon updating" -t 10 & | |
| − | + | fi | |
| − | + | echo "OK" | |
| − | + | ;; | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
*) | *) | ||
| − | + | echo "Usage: $0 {start|stop|status|update}" | |
| − | + | exit 1 | |
| − | + | ;; | |
esac | esac | ||
# rc_exit | # rc_exit | ||
</pre> | </pre> | ||
Revision as of 14:44, 15 June 2008
For runlevel scripts, this script can be used as a basis for further needs. It works good in an SeonBox environment. Actual versions of init-scripts can be found here: http://www.seon.de/downloads/init-scripts/
#! /bin/sh
### BEGIN INIT INFO
# Provides: Seon
# Required-Start: mysql
# Should-Start: mysql
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Seon
# Description: Start and stop Seon daemons, update Seon
### END INIT INFO
# Check for existence of needed config file and read it
Seon_CONFIG=/etc/seon.conf
test -r $Seon_CONFIG || { echo "$Seon_CONFIG not existing";
if [ "$1" = "stop" ]; then exit 0;
else exit 6; fi; }
# first, source the config file for database parameters
. $Seon_CONFIG
# retrieve directories and settings
Seon_BINDIR=`echo "SELECT value FROM ${TABLEPREFIX}configuration WHERE name='bin_directory'" | $MYSQLCLIENT --silent --user=$DB_USER --password=$DB_PASS --host=$DB_HOST $DB_NAME`
Seon_ENTERPRISE=`echo "SELECT value FROM ${TABLEPREFIX}configuration WHERE name='seon_enterprise'" | $MYSQLCLIENT --silent --user=$DB_USER --password=$DB_PASS --host=$DB_HOST $DB_NAME`
Seon_WEBINTERFACE=`echo "SELECT value FROM ${TABLEPREFIX}configuration WHERE name='webinterface_path'" | $MYSQLCLIENT --silent --user=$DB_USER --password=$DB_PASS --host=$DB_HOST $DB_NAME`
LCDECHO=/usr/local/bin/lcdecho
# Check for missing binaries (stale symlinks should not happen)
# Note: Special treatment of stop for LSB conformance
SeonRD_BIN=$Seon_BINDIR/seonrd
test -x $SeonRD_BIN || { echo "$SeonRD_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
SeonSQD_BIN=$Seon_BINDIR/seonsqd
test -x $SeonSQD_BIN || { echo "$SeonSQD_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
SeonDEBUGD_BIN=$Seon_BINDIR/seondebugd
test -x $SeonDEBUGD_BIN || { echo "$SeonDEBUGD_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
if [ $Seon_ENTERPRISE -gt 0 ]
then
SeonCLIENTD_BIN=$Seon_BINDIR/seonclientd
test -x $SeonCLIENTD_BIN || { echo "$SeonCLIENTD_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
fi
SeonPOLL_BIN=$Seon_BINDIR/seonpoll
test -x $SeonPOLL_BIN || { echo "$SeonPOLL_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
case "$1" in
start)
# pre-check lockfile
if [ -d $Seon_WEBINTERFACE ]
then
if [ -e ${Seon_WEBINTERFACE}/blank_install ]
then
# try to recover installation
if [ -e /sd_card/seon.*.sql.gz ]
then
# backupfile exists, restore complete system
/opt/seon/scripts/systemrestore_from_sd.sh && rm -f ${Seon_WEBINTERFACE}/blank_install
else
echo "not starting Seon: blank installation, please configure Seon"
exit
fi
fi
fi
echo -n "Starting Seon "
echo -n "seonrd... "
$SeonRD_BIN
echo -n "seonsqd... "
$SeonSQD_BIN
echo -n "seondebugd... "
$SeonDEBUGD_BIN
if [ $Seon_ENTERPRISE -gt 0 ]
then
echo -n "seonclientd... "
$SeonCLIENTD_BIN
fi
echo "OK"
if [ -x $LCDECHO ]
then
$LCDECHO -a "Seon started" -t 10 &
fi
;;
stop)
echo -n "Shutting down Seon "
echo -n "seonrd... "
killall seonrd >/dev/null 2>&1
echo -n "seonsqd... "
killall seonsqd >/dev/null 2>&1
echo -n "seondebugd... "
killall seondebugd >/dev/null 2>&1
if [ $Seon_ENTERPRISE -gt 0 ]
then
echo -n "seonclientd... "
killall seonclientd >/dev/null 2>&1
fi
echo OK
if [ -x $LCDECHO ]
then
$LCDECHO -a "Seon stopped" -t 10 &
fi
;;
status)
echo -n "Checking for service Seon "
pidof seonrd >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo -n "... seonrd is not running"
else
echo -n "... seonrd OK "
fi
pidof seonsqd >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo -n "... seonsqd is not running"
else
echo -n "... seonsqd OK "
fi
pidof seondebugd > /dev/null 2>&1
if [ $? -ne 0 ]
then
echo "... seondebugd is not running"
else
echo -n "... seondebugd OK "
fi
if [ $Seon_ENTERPRISE -gt 0 ]
then
pidof seonclientd >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo "... seonclientd is not running"
else
echo "... seonclientd OK "
fi
else
echo ""
fi
;;
update)
echo -n "Initiating Seon update... "
$SeonPOLL_BIN Seon-Update
if [ -x $LCDECHO ]
then
$LCDECHO -a "Seon updating" -t 10 &
fi
echo "OK"
;;
*)
echo "Usage: $0 {start|stop|status|update}"
exit 1
;;
esac
# rc_exit