Reupload after bitbucket wipe
This commit is contained in:
791
scripts/run_hlstats
Normal file
791
scripts/run_hlstats
Normal file
@ -0,0 +1,791 @@
|
||||
#!/bin/bash
|
||||
# HLstatsX Community Edition - Real-time player and clan rankings and statistics
|
||||
# Copyleft (L) 2008-20XX Nicholas Hastings (nshastings@gmail.com)
|
||||
# http://www.hlxce.com
|
||||
#
|
||||
# HLstatsX Community Edition is a continuation of
|
||||
# ELstatsNEO - Real-time player and clan rankings and statistics
|
||||
# Copyleft (L) 2008-20XX Malte Bayer (steam@neo-soft.org)
|
||||
# http://ovrsized.neo-soft.org/
|
||||
#
|
||||
# ELstatsNEO is an very improved & enhanced - so called Ultra-Humongus Edition of HLstatsX
|
||||
# HLstatsX - Real-time player and clan rankings and statistics for Half-Life 2
|
||||
# http://www.hlstatsx.com/
|
||||
# Copyright (C) 2005-2007 Tobias Oetzel (Tobi@hlstatsx.com)
|
||||
#
|
||||
# HLstatsX is an enhanced version of HLstats made by Simon Garner
|
||||
# HLstats - Real-time player and clan rankings and statistics for Half-Life
|
||||
# http://sourceforge.net/projects/hlstats/
|
||||
# Copyright (C) 2001 Simon Garner
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# For support and installation notes visit http://www.hlxcommunity.com
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Usage
|
||||
# Information on how to use this script can be found on our wiki:
|
||||
# http://wiki.hlxce.com
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Script Configuration
|
||||
# These parameters allow you to adjust various functions of the daemon.
|
||||
# In general, they should not need to be modified.
|
||||
# Please visit our wiki for more information: http://wiki.hlxce.com
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# SCRIPTPATH:
|
||||
# File system path to daemon and supporting files
|
||||
# NOTE: This is only needed if the other scripts files will be in another directory.
|
||||
# In general, NO TOUCHY! :)
|
||||
SCRIPTPATH=.
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# CONFFILE:
|
||||
# Specifies the configuration file (relative to SCRIPTPATH) to use for the daemon
|
||||
CONFFILE=hlstats.conf
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# DAEMON:
|
||||
# Specifies the daemon Perl script to be used
|
||||
DAEMON=hlstats.pl
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# LOGDIR:
|
||||
# Specifies the location to store logs
|
||||
LOGDIR=${SCRIPTPATH}/logs
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# LOGDATE:
|
||||
# Specifies the date format to use in log file names
|
||||
LOGDATE_FORMAT=%Y-%m-%d_%H-%M-%S
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# PIDDIR:
|
||||
# Specifies location to store daemon PID files
|
||||
PIDDIR=${SCRIPTPATH}
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Nothing to modify below here
|
||||
WEBSITE=http://www.hlxce.com
|
||||
WIKI=http://wiki.hlxce.com
|
||||
|
||||
# Start output
|
||||
echo
|
||||
echo "HLstatsX:CE daemon control"
|
||||
echo "${WEBSITE}"
|
||||
echo "---------------------------"
|
||||
|
||||
# Change to directory of script
|
||||
cd `dirname ${0}`
|
||||
|
||||
# Perform some initial checks before we encounter later errors
|
||||
# Check if we can write to the SCRIPTPATH
|
||||
if [ ! -w ${SCRIPTPATH} ]; then
|
||||
echo "CRITICAL ERROR: Could not write to SCRIPTPATH: ${SCRIPTPATH}"
|
||||
echo "Verify you have write access to this directory."
|
||||
echo "Visit our wiki for more information: ${WIKI}."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if the daemon perl script exists
|
||||
if [ ! -f ${SCRIPTPATH}/${DAEMON} ]; then
|
||||
echo "CRITICAL ERROR: Cannot access the daemon: ${DAEMON}"
|
||||
echo "Verify that the daemon, and corresponding files, exist in ${SCRIPTPATH}"
|
||||
echo "Visit our wiki for more information: ${WIKI}."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verify shebang line in daemon
|
||||
SHEBANG=`head -n1 ${SCRIPTPATH}/${DAEMON}`
|
||||
if [[ ${SHEBANG} =~ ^#! ]]; then
|
||||
SHEBANG_BINARY=`echo "${SHEBANG}" | sed 's/^#!//'`
|
||||
if [ ! -f ${SHEBANG_BINARY} ]; then
|
||||
echo "CRITICAL ERROR: The path to Perl is incorrect in ${DAEMON}."
|
||||
echo "Current Perl path in shebang: ${SHEBANG_BINARY}"
|
||||
echo "Visit our wiki for more information: ${WIKI}."
|
||||
echo
|
||||
echo "Potential paths for Perl: "
|
||||
echo `which perl`
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "CRITICAL ERROR: The shebang line is incorrectly configured. Please verify that your shebang line is correct in ${DAEMON}."
|
||||
echo "Current shebang line: ${SHEBANG}"
|
||||
echo "Visit our wiki for more information: ${WIKI}."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create logdir if needed
|
||||
if [ ! -d ${LOGDIR} ]; then
|
||||
mkdir ${LOGDIR}
|
||||
fi
|
||||
|
||||
# Make sure we can write to logdir
|
||||
if [ ! -w ${LOGDIR} ]; then
|
||||
echo "CRITICAL ERROR: Could not write to the log folder: ${LOGDIR}"
|
||||
echo "Verify that you have write access to the log folder."
|
||||
echo "Visit our wiki for more information: ${WIKI}."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Daemon control functions
|
||||
function start_daemon {
|
||||
# This function handles the creation of a new daemon process.
|
||||
# This function requires one parameter: PORT
|
||||
# Returns:
|
||||
# 0 - Daemon started
|
||||
# 1 - Daemon failed to start
|
||||
# 2 - Daemon already running
|
||||
|
||||
if [ ! $1 ]; then
|
||||
echo "CRITICAL ERROR: No port was received on function start_daemon"
|
||||
exit 1
|
||||
else
|
||||
local PORT=$1
|
||||
fi
|
||||
|
||||
local LOG=${LOGDIR}/hlstats_${PORT}_`date +${LOGDATE_FORMAT}`
|
||||
|
||||
local PID=`get_pid ${PORT}`
|
||||
# Check if a PID exists for this port number
|
||||
if [ "${PID}" != "" ]; then
|
||||
# PID exists -- check if the daemon is running.
|
||||
kill -0 ${PID} &> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
# Daemon running -- nothing to do.
|
||||
return 2
|
||||
else
|
||||
# Daemon not running -- remove pid.
|
||||
remove_pidfile ${PORT}
|
||||
fi
|
||||
fi
|
||||
|
||||
# Start the daemon on requested port
|
||||
echo -ne "Attempting to start HLstatsX:CE daemon on port ${PORT}..."
|
||||
${SCRIPTPATH}/${DAEMON} --configfile=${CONFFILE} --port=${PORT} &> ${LOG} &
|
||||
# Store PID in memory until we verify Daemon has launched
|
||||
PID=$!
|
||||
|
||||
# Perform one quick check to see if PID is running
|
||||
kill -0 ${PID} &> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
create_pidfile ${PORT} ${PID}
|
||||
echo ""
|
||||
return 0
|
||||
else
|
||||
# PID not detected in time, keep checking for 10 more seconds.
|
||||
local i=1
|
||||
while [ $i -le 10 ]
|
||||
do
|
||||
echo -ne " ${i}"
|
||||
sleep 1
|
||||
# Perform a kill check against saved PID
|
||||
kill -0 ${PID} &> /dev/null
|
||||
# Check results of pid test
|
||||
if [ $? -eq 1 ]; then
|
||||
# Process does not exist
|
||||
let i++
|
||||
if [ $i -eq 10 ]; then
|
||||
# Daemon did not respond to start request within 10 seconds.
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
# Daemon started successfully -- commit PID to file
|
||||
create_pidfile ${PORT} ${PID}
|
||||
echo ""
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
function stop_daemon {
|
||||
# This function handles shutting a daemon down.
|
||||
# This function requires one parameter: PORT.
|
||||
|
||||
# Returns:
|
||||
# 0 - Daemon gracefully stopped
|
||||
# 1 - Daemon forcefully stopped
|
||||
# 2 - Daemon could not be stopped
|
||||
# 3 - No daemon to stop or PID missing
|
||||
|
||||
if [ ! $1 ]; then
|
||||
echo "CRITICAL ERROR: No port was received on function stop_daemon"
|
||||
exit 1
|
||||
else
|
||||
local PORT=$1
|
||||
fi
|
||||
|
||||
local PID=`get_pid ${PORT}`
|
||||
|
||||
if [ ${PID} -eq 0 ]; then
|
||||
return 3
|
||||
fi
|
||||
|
||||
# Attempt to stop the daemon
|
||||
echo -n "Attempting graceful shutdown of HLstatsX:CE daemon on port ${PORT} "
|
||||
kill -INT ${PID} &> /dev/null
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
# Daemon is not running, purge the PID.
|
||||
remove_pidfile ${PORT}
|
||||
echo ""
|
||||
return 3
|
||||
else
|
||||
# Found running PID -- perform a quick check before entering loop
|
||||
kill -0 ${PID} &> /dev/null
|
||||
if [ $? -eq 1 ]; then
|
||||
# Daemon stopped, remove PID
|
||||
remove_pidfile ${PORT}
|
||||
echo ""
|
||||
return 0
|
||||
else
|
||||
local i=1
|
||||
while [ $i -le 10 ]
|
||||
do
|
||||
echo -n " ${i}"
|
||||
sleep 1
|
||||
# Perform a kill check against saved PID
|
||||
kill -0 ${PID} &> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
# Daemon still operating
|
||||
let i++
|
||||
else
|
||||
# Daemon stopped, remove PID
|
||||
remove_pidfile ${PORT}
|
||||
echo ""
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Daemon did not respond to shutdown, attempt a forced kill
|
||||
echo ""
|
||||
echo "WARNING: Daemon did not respond to a graceful shut down. Forcing a shut down on port ${PORT} "
|
||||
local i=1
|
||||
while [ $i -le 5 ]
|
||||
do
|
||||
kill -KILL ${PID} &> /dev/null
|
||||
echo -n " ${i}"
|
||||
sleep 1
|
||||
|
||||
# Check if PID is still present
|
||||
kill -0 ${PID} &> /dev/null
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
# Daemon still operating
|
||||
let i++
|
||||
else
|
||||
# Daemon stopped successfully.
|
||||
remove_pidfile ${PORT}
|
||||
echo ""
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
return 2
|
||||
fi
|
||||
}
|
||||
|
||||
function reload_daemon {
|
||||
# This function handles reloading a daemon down.
|
||||
# This function requires one parameter: PORT.
|
||||
|
||||
# Returns:
|
||||
# 0 - Reload sent successfully
|
||||
# 1 - Daemon not running or pid file missing
|
||||
|
||||
# Sanity check on incoming required parameter
|
||||
if [ ! $1 ]; then
|
||||
echo "CRITICAL ERROR: No port was received on function reload_daemon"
|
||||
exit 1
|
||||
else
|
||||
local PORT=$1
|
||||
fi
|
||||
|
||||
|
||||
local PID=`get_pid ${PORT}`
|
||||
# Check to verify the daemon is operational
|
||||
if [ ${PID} -ne 0 ]; then
|
||||
kill -0 ${PID} &> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
kill -HUP ${PID} &> /dev/null
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function check_port {
|
||||
# This function verifies user input on the port number
|
||||
# One argument is required
|
||||
|
||||
# Returns:
|
||||
# 0 - Valid input
|
||||
# 1 - Invalid Input (non-digit or not in UDP port range)
|
||||
|
||||
if [ $1 ]; then
|
||||
# Perform regex test on input
|
||||
echo ${1} | grep -q '^[0-9]\{1,5\}$'
|
||||
# Check if within range and if grep test was successful.
|
||||
if [ $? -eq 0 ] && [ $1 -le 65535 ] && [ $1 -ge 1 ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function get_status {
|
||||
# This function performs a lookup for the PID on specified port and checks status
|
||||
# Parameters:
|
||||
# 1 - port
|
||||
|
||||
# Returns:
|
||||
# 0 - PID is running
|
||||
# 1 - PID is not running
|
||||
# 2 - Invalid PID
|
||||
|
||||
if [ $1 ]; then
|
||||
local PID=`get_pid ${1}`
|
||||
if [ "${PID}" != "" ]; then
|
||||
kill -0 ${PID} &> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function create_pidfile {
|
||||
# This function will handle the creation of a PID file for a corresponding port
|
||||
# Parameters required:
|
||||
# 1 - port number
|
||||
# 2 - PID
|
||||
|
||||
# Returns:
|
||||
# 0 - PID saved
|
||||
# 1 - Unable to save PID
|
||||
|
||||
if [[ $1 && $2 ]]; then
|
||||
PIDFILE=${PIDDIR}/hlstats_${1}.pid
|
||||
echo ${2} > ${PIDFILE}
|
||||
|
||||
if [ "`cat ${PIDFILE}`" -eq "${2}" ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function remove_pidfile {
|
||||
# This function will handle the deletion of a PID file for a corresponding port
|
||||
# Parameters required:
|
||||
# 1 - port number
|
||||
|
||||
# Returns:
|
||||
# 0 - PID removed
|
||||
# 1 - PID does not exist
|
||||
|
||||
if [ $1 ]; then
|
||||
PIDFILE=${PIDDIR}/hlstats_${1}.pid
|
||||
rm -f ${PIDFILE} &> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function get_pid {
|
||||
# This function will echo out the found pid and return 0, or return 1 if it finds nothing
|
||||
# Parameters required:
|
||||
# 1 - port number
|
||||
|
||||
# Output
|
||||
# Requested PID on return 0
|
||||
|
||||
# Returns:
|
||||
# 0 - PID number for corresponding process
|
||||
# 1 - No PID file for specified port
|
||||
|
||||
if [ $1 ]; then
|
||||
PIDFILE=${PIDDIR}/hlstats_${1}.pid
|
||||
PID=`cat ${PIDFILE} 2> /dev/null`
|
||||
if [ $? -eq 0 ]; then
|
||||
echo ${PID}
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Cleanup old legacy run_hlstats stuff
|
||||
# Check if hlstats.pid exists (original pid from legacy run_hlstats)
|
||||
if [ -f ${PIDDIR}/hlstats.pid ]; then
|
||||
echo "WARNING: A old PID file has been detected. To prevent further troubles this daemon will be shut down."
|
||||
kill -KILL `cat ${PIDDIR}/hlstats.pid` &> /dev/null
|
||||
sleep 1
|
||||
# Check if PID is dead
|
||||
i=1
|
||||
while [ $i -le 5 ]
|
||||
do
|
||||
kill -0 `cat ${PIDDIR}/hlstats.pid` &> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
# Daemon still operating
|
||||
let i++
|
||||
sleep 1
|
||||
else
|
||||
# Daemon stopped successfully.
|
||||
rm -f ${PIDDIR}/hlstats.pid
|
||||
echo ""
|
||||
echo "HLstatsX:CE daemon has been forcefully stopped."
|
||||
echo "Please re-run this script to control your daemon."
|
||||
exit
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Daemon control case switcher
|
||||
case "$1" in
|
||||
start)
|
||||
# Usage: run_hlstats start <# of daemons> <first port number> <port increment number>
|
||||
# All arguments are optional
|
||||
# Defaults: # of Daemons = 1; First port number = 27500; Port increment number = 1
|
||||
NUMDAEMONS=1
|
||||
STARTPORT=27500
|
||||
INCREMENT=1
|
||||
|
||||
# Get user-specified number of daemons
|
||||
if [ $2 ]; then
|
||||
NUMDAEMONS=$2
|
||||
fi
|
||||
|
||||
if [ $3 ]; then
|
||||
check_port $3
|
||||
if [ $? -eq 0 ]; then
|
||||
STARTPORT=$3
|
||||
else
|
||||
echo "CRITICAL ERROR: An invalid port number was specified."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $4 ]; then
|
||||
INCREMENT=$4
|
||||
fi
|
||||
|
||||
# Saving this for a future release -- right now this would prevent people from running run_hlstats every few minutes to make sure their daemon is operational.
|
||||
#else
|
||||
# # Lookup the highest currently used port number
|
||||
# LASTPORT=`ls ${PIDDIR} | egrep 'hlstats_[0-9]{1,5}.pid' | egrep -o '[0-9]{1,5}' | tail -1`
|
||||
# if [ "${LASTPORT}" != "" ]; then
|
||||
# # We have currently running daemons, to take the current highest port number and increment it
|
||||
# let STARTPORT=LASTPORT+INCREMENT
|
||||
# fi
|
||||
#
|
||||
#fi
|
||||
|
||||
i=0
|
||||
CURRENTPORT=${STARTPORT}
|
||||
while [ ${i} -lt ${NUMDAEMONS} ]
|
||||
do
|
||||
start_daemon ${CURRENTPORT}
|
||||
case $? in
|
||||
0)
|
||||
echo "Daemon successfully started on port ${CURRENTPORT}"
|
||||
let CURRENTPORT=CURRENTPORT+INCREMENT
|
||||
let i++
|
||||
;;
|
||||
1)
|
||||
echo "CRITICAL ERROR: Unable to start daemon on port ${CURRENTPORT}"
|
||||
exit 1
|
||||
;;
|
||||
2)
|
||||
echo "Daemon is already running on port ${CURRENTPORT}"
|
||||
let CURRENTPORT=CURRENTPORT+INCREMENT
|
||||
let i++
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
|
||||
stop)
|
||||
# Usage: run_hlstats stop <port>
|
||||
# All arguments are optional
|
||||
# Defaults: port = ALL
|
||||
|
||||
if [ $2 ]; then
|
||||
check_port $2
|
||||
if [ $? -eq 0 ]; then
|
||||
PORT=$2
|
||||
else
|
||||
echo "CRITICAL ERROR: An invalid port number was specified."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
PORT=0
|
||||
fi
|
||||
|
||||
# Stop a single daemon
|
||||
if [ ${PORT} -ne 0 ]; then
|
||||
stop_daemon ${PORT}
|
||||
case $? in
|
||||
0)
|
||||
echo "Daemon gracefully stopped on port ${PORT}"
|
||||
exit 0
|
||||
;;
|
||||
1)
|
||||
echo "Daemon forcefully stopped on port ${PORT}"
|
||||
exit 0
|
||||
;;
|
||||
2)
|
||||
echo "WARNING: Daemon could not be stopped on port ${PORT}"
|
||||
exit 1
|
||||
;;
|
||||
3)
|
||||
echo "No daemon running on port ${PORT} or PID file is missing."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Stop all daemons
|
||||
PORTS=`ls ${PIDDIR} | egrep 'hlstats_[0-9]{1,5}.pid' | egrep -o '[0-9]{1,5}'`
|
||||
if [ $? -eq 0 ]; then
|
||||
for port in ${PORTS} ; do
|
||||
stop_daemon ${port}
|
||||
case $? in
|
||||
0)
|
||||
echo "Daemon gracefully stopped on port ${port}"
|
||||
;;
|
||||
1)
|
||||
echo "Daemon forcefully stopped on port ${port}"
|
||||
;;
|
||||
2)
|
||||
echo "WARNING: Daemon could not be stopped on port ${port}"
|
||||
;;
|
||||
3)
|
||||
echo "No daemon running on port ${port} or PID file is missing."
|
||||
;;
|
||||
esac
|
||||
done
|
||||
else
|
||||
echo "No daemons found running, or PID files are missing."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
restart)
|
||||
# Usage: run_hlstats restart <port>
|
||||
# All arguments are optional
|
||||
# Defaults: port = ALL
|
||||
|
||||
if [ $2 ]; then
|
||||
check_port $2
|
||||
if [ $? -eq 0 ]; then
|
||||
PORT=$2
|
||||
else
|
||||
echo "CRITICAL ERROR: An invalid port number was specified."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
PORT=0
|
||||
fi
|
||||
|
||||
# Handle individual restart request
|
||||
if [ ${PORT} -ne 0 ]; then
|
||||
stop_daemon ${PORT}
|
||||
case $? in
|
||||
0 | 1 | 3)
|
||||
start_daemon ${PORT}
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Daemon successfully restarted on port ${PORT}"
|
||||
exit 0
|
||||
else
|
||||
echo "CRITICAL ERROR: Failed to restart daemon on port ${PORT}"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
echo "WARNING: Daemon could not be stopped on port ${port}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Restart all PIDs
|
||||
PORTS=`ls ${PIDDIR} | egrep 'hlstats_[0-9]{1,5}.pid' | egrep -o '[0-9]{1,5}'`
|
||||
if [ $? -eq 0 ]; then
|
||||
for port in ${PORTS} ; do
|
||||
stop_daemon ${port}
|
||||
case $? in
|
||||
0 | 1 | 3)
|
||||
start_daemon ${port}
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Daemon successfully restarted on port ${port}"
|
||||
else
|
||||
echo "WARNING: Failed to restart daemon on port ${port}"
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
echo "WARNING: Daemon could not be stopped on port ${port}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
else
|
||||
echo "WARNING: No HLstatsX:CE daemons currently running."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
reload)
|
||||
# Usage: run_hlstats reload <port>
|
||||
# All arguments are optional
|
||||
# Defaults: port = ALL
|
||||
|
||||
if [ $2 ]; then
|
||||
check_port $2
|
||||
if [ $? -eq 0 ]; then
|
||||
PORT=$2
|
||||
else
|
||||
echo "CRITICAL ERROR: An invalid port number was specified."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
PORT=0
|
||||
fi
|
||||
|
||||
# Handle individual reload request
|
||||
if [ ${PORT} -ne 0 ]; then
|
||||
reload_daemon ${PORT}
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Successfully reloaded daemon running on port ${PORT}"
|
||||
exit 0
|
||||
else
|
||||
echo "WARNING: Unable to reload daemon on port ${PORT} (daemon might not be running)"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Reload all PIDs
|
||||
PORTS=`ls ${PIDDIR} | egrep 'hlstats_[0-9]{1,5}.pid' | egrep -o '[0-9]{1,5}'`
|
||||
if [ "${PORTS}" != "" ]; then
|
||||
for port in ${PORTS} ; do
|
||||
reload_daemon ${port}
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Successfully reloaded daemon running on port ${port}"
|
||||
else
|
||||
echo "WARNING: Unable to reload daemon on port ${port} (daemon might not be running)"
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "WARNING: No HLstatsX:CE daemons currently running."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
status)
|
||||
# Usage: run_hlstats status <port>
|
||||
# All arguments are optional
|
||||
# Defaults: port = ALL
|
||||
|
||||
if [ $2 ]; then
|
||||
check_port $2
|
||||
if [ $? -eq 0 ]; then
|
||||
PORT=$2
|
||||
else
|
||||
echo "CRITICAL ERROR: An invalid port number was specified."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
PORT=0
|
||||
fi
|
||||
|
||||
# Handle individual status request
|
||||
if [ ${PORT} -ne 0 ]; then
|
||||
get_status ${PORT}
|
||||
case $? in
|
||||
0)
|
||||
echo "Daemon on port ${PORT} is currently running."
|
||||
exit 0
|
||||
;;
|
||||
1)
|
||||
echo "A stale process was found for daemon on port ${PORT}."
|
||||
exit 0
|
||||
;;
|
||||
2)
|
||||
echo "There is no daemon running on port ${PORT}."
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Reload all PIDs
|
||||
PORTS=`ls ${PIDDIR} | egrep 'hlstats_[0-9]{1,5}.pid' | egrep -o '[0-9]{1,5}'`
|
||||
if [ "${PORTS}" != "" ]; then
|
||||
for port in ${PORTS} ; do
|
||||
get_status ${port}
|
||||
case $? in
|
||||
0)
|
||||
echo "Daemon on port ${port} is currently running."
|
||||
;;
|
||||
1)
|
||||
echo "A stale process was found for daemon on port ${port}. It has been removed."
|
||||
;;
|
||||
2)
|
||||
echo "There is no daemon running on port ${port}."
|
||||
;;
|
||||
esac
|
||||
done
|
||||
else
|
||||
echo "WARNING: No HLstatsX:CE daemons currently running."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage"
|
||||
echo "All optional arguments are in <>. The default is in ()."
|
||||
echo ""
|
||||
echo -e "\trun_hlstats start <number of daemons (1)> <starting port number (27500)> <port increment (1)>"
|
||||
echo -e "\trun_hlstats stop <port # of daemon to stop (ALL)>"
|
||||
echo -e "\trun_hlstats status <port # of daemon to check status of (ALL)>"
|
||||
echo -e "\trun_hlstats restart <port # of daemon to restart (ALL)>"
|
||||
echo -e "\trun_hlstats reload <port # of daemon to reload (ALL)>"
|
||||
;;
|
||||
esac
|
||||
exit
|
||||
|
Reference in New Issue
Block a user