aboutsummaryrefslogtreecommitdiffstats
path: root/lsb-bootscripts/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lsb-bootscripts/lib')
-rw-r--r--lsb-bootscripts/lib/lsb/init-functions496
1 files changed, 374 insertions, 122 deletions
diff --git a/lsb-bootscripts/lib/lsb/init-functions b/lsb-bootscripts/lib/lsb/init-functions
index 338f3e00b..39e4d2318 100644
--- a/lsb-bootscripts/lib/lsb/init-functions
+++ b/lsb-bootscripts/lib/lsb/init-functions
@@ -8,29 +8,24 @@ if [ "${RC_BASE}" = "" ]; then
. /etc/default/rc
fi
-# Source the distro functions file
-if [ "${DISTRO_MINI}" != "" ]; then
- . "${RC_BASE}/init.d/${DISTRO_MINI}-functions"
-fi
-
-################################################################################
-# start_daemon() #
-# Usage: start_daemon [-f] [-n nicelevel] [-p pidfile] pathname [args...] #
-# #
-# Purpose: This runs the specified program as a daemon #
-# #
-# Inputs: -f: (force) run the program even if it is already running. #
-# -n nicelevel: specify a nice level. See 'man nice(1)'. #
-# -p pidfile: use the specified file to determine PIDs. #
-# pathname: the complete path to the specified program #
-# args: additional arguments passed to the program (pathname) #
-# #
-# Return values (as defined by LSB exit codes): #
-# 0 - program is running or service is OK #
-# 1 - generic or unspecified error #
-# 2 - invalid or excessive argument(s) #
-# 5 - program is not installed #
-################################################################################
+###############################################################################
+# start_daemon() #
+# Usage: start_daemon [-f] [-n nicelevel] [-p pidfile] pathname [args...] #
+# #
+# Purpose: This runs the specified program as a daemon #
+# #
+# Inputs: -f: (force) run the program even if it is already running. #
+# -n nicelevel: specify a nice level. See 'man nice(1)'. #
+# -p pidfile: use the specified file to determine PIDs. #
+# pathname: the complete path to the specified program #
+# args: additional arguments passed to the program (pathname) #
+# #
+# Return values (as defined by LSB exit codes): #
+# 0 - program is running or service is OK #
+# 1 - generic or unspecified error #
+# 2 - invalid or excessive argument(s) #
+# 5 - program is not installed #
+###############################################################################
start_daemon()
{
local force=""
@@ -127,25 +122,25 @@ start_daemon()
}
-################################################################################
-# killproc() #
-# Usage: killproc [-p pidfile] pathname [signal] #
-# #
-# Purpose: Send control signals to running processes #
-# #
-# Inputs: -p pidfile, uses the specified pidfile #
-# pathname, pathname to the specified program #
-# signal, send this signal to pathname #
-# #
-# Return values (as defined by LSB exit codes): #
-# 0 - program (pathname) has stopped/is already stopped or a #
-# running program has been sent specified signal and stopped #
-# successfully #
-# 1 - generic or unspecified error #
-# 2 - invalid or excessive argument(s) #
-# 5 - program is not installed #
-# 7 - program is not running and a signal was supplied #
-################################################################################
+###############################################################################
+# killproc() #
+# Usage: killproc [-p pidfile] pathname [signal] #
+# #
+# Purpose: Send control signals to running processes #
+# #
+# Inputs: -p pidfile, uses the specified pidfile #
+# pathname, pathname to the specified program #
+# signal, send this signal to pathname #
+# #
+# Return values (as defined by LSB exit codes): #
+# 0 - program (pathname) has stopped/is already stopped or a #
+# running program has been sent specified signal and stopped #
+# successfully #
+# 1 - generic or unspecified error #
+# 2 - invalid or excessive argument(s) #
+# 5 - program is not installed #
+# 7 - program is not running and a signal was supplied #
+###############################################################################
killproc()
{
local pidfile
@@ -335,20 +330,20 @@ killproc()
fi
}
-################################################################################
-# pidofproc() #
-# Usage: pidofproc [-p pidfile] pathname #
-# #
-# Purpose: This function returns one or more pid(s) for a particular daemon #
-# #
-# Inputs: -p pidfile, use the specified pidfile instead of pidof #
-# pathname, path to the specified program #
-# #
-# Return values (as defined by LSB status codes): #
-# 0 - Success (PIDs to stdout) #
-# 1 - Program is dead, PID file still exists (remaining PIDs output) #
-# 3 - Program is not running (no output) #
-################################################################################
+###############################################################################
+# pidofproc() #
+# Usage: pidofproc [-p pidfile] pathname #
+# #
+# Purpose: This function returns one or more pid(s) for a particular daemon #
+# #
+# Inputs: -p pidfile, use the specified pidfile instead of pidof #
+# pathname, path to the specified program #
+# #
+# Return values (as defined by LSB status codes): #
+# 0 - Success (PIDs to stdout) #
+# 1 - Program is dead, PID file still exists (remaining PIDs output) #
+# 3 - Program is not running (no output) #
+###############################################################################
pidofproc()
{
@@ -427,18 +422,19 @@ local exitstatus="0"
return "${exitstatus}"
fi
}
-################################################################################
-# log_success_msg() #
-# Usage: log_success_msg [$MESSAGE | "message"] #
-# #
-# Purpose: Print a successful status message to the screen and optionally #
-# a boot log file. #
-# #
-# Inputs: accepts one string value, either a quoted string or optionally #
-# the value of $MESSAGE if set in the running environment. #
-# #
-# Return values: Not used #
-################################################################################
+
+###############################################################################
+# log_success_msg() #
+# Usage: log_success_msg [$MESSAGE | "message"] #
+# #
+# Purpose: Print a successful status message to the screen and optionally #
+# a boot log file. #
+# #
+# Inputs: accepts one string value, either a quoted string or optionally #
+# the value of $MESSAGE if set in the running environment. #
+# #
+# Return values: Not used #
+###############################################################################
log_success_msg()
{
echo -n -e "${PREFIX_SUCCESS}${@}"
@@ -456,18 +452,18 @@ log_success_msg()
return 0
}
-################################################################################
-# log_failure_msg() #
-# Usage: log_failure_msg [$MESSAGE | "message"] #
-# #
-# Purpose: Print a failure status message to the screen and optionally #
-# a boot log file. #
-# #
-# Inputs: accepts one string value, either a quoted string or optionally #
-# the value of $MESSAGE if set in the running environment. #
-# #
-# Return values: Not used #
-################################################################################
+###############################################################################
+# log_failure_msg() #
+# Usage: log_failure_msg [$MESSAGE | "message"] #
+# #
+# Purpose: Print a failure status message to the screen and optionally #
+# a boot log file. #
+# #
+# Inputs: accepts one string value, either a quoted string or optionally #
+# the value of $MESSAGE if set in the running environment. #
+# #
+# Return values: Not used #
+###############################################################################
log_failure_msg()
{
echo -n -e "${PREFIX_FAILURE}${@}"
@@ -485,18 +481,18 @@ log_failure_msg()
return 0
}
-################################################################################
-# log_warning_msg() #
-# Usage: log_warning_msg [$MESSAGE | "message"] #
-# #
-# Purpose: Print a warning status message to the screen and optionally #
-# a boot log file. #
-# #
-# Inputs: accepts one string value, either a quoted string or optionally #
-# the value of $MESSAGE if set in the running environment. #
-# #
-# Return values: Not used #
-################################################################################
+###############################################################################
+# log_warning_msg() #
+# Usage: log_warning_msg [$MESSAGE | "message"] #
+# #
+# Purpose: Print a warning status message to the screen and optionally #
+# a boot log file. #
+# #
+# Inputs: accepts one string value, either a quoted string or optionally #
+# the value of $MESSAGE if set in the running environment. #
+# #
+# Return values: Not used #
+###############################################################################
log_warning_msg()
{
echo -n -e "${PREFIX_WARNING}${@}"
@@ -514,20 +510,22 @@ log_warning_msg()
return 0
}
-################################################################################
-# check_signal() #
-# Usage: check_signal [ -{signal} | {signal} ] #
-# #
-# Purpose: Check for a valid signal. This is not defined by any LSB draft, #
-# however, it is required to check the signals to determine if the #
-# signals chosen are invalid arguments to the other functions. #
-# #
-# Inputs: accepts a single string value in the form or -{signal} or {signal} #
-# #
-# Return values: #
-# 0 - Success (signal is valid #
-# 1 - Signal is not valid #
-################################################################################
+# The remaining fucntions are distro specific and are not defined by the LSB
+
+###############################################################################
+# check_signal() #
+# Usage: check_signal [ -{signal} | {signal} ] #
+# #
+# Purpose: Check for a valid signal. This is not defined by any LSB draft, #
+# however, it is required to check the signals to determine if the #
+# signals chosen are invalid arguments to the other functions. #
+# #
+# Inputs: accepts a single string value in the form or -{signal} or {signal} #
+# #
+# Return values: #
+# 0 - Success (signal is valid #
+# 1 - Signal is not valid #
+###############################################################################
check_signal()
{
local valsig
@@ -548,22 +546,21 @@ check_signal()
fi
}
-
-################################################################################
-# check_sig_type() #
-# Usage: check_signal [ -{signal} | {signal} ] #
-# #
-# Purpose: Check if signal is a program termination signal or a control signal #
-# This is not defined by any LSB draft, however, it is required to #
-# check the signals to determine if they are intended to end a #
-# program or simply to control it. #
-# #
-# Inputs: accepts a single string value in the form or -{signal} or {signal} #
-# #
-# Return values: #
-# 0 - Signal is used for program termination #
-# 1 - Signal is used for program control #
-################################################################################
+###############################################################################
+# check_sig_type() #
+# Usage: check_signal [ -{signal} | {signal} ] #
+# #
+# Purpose: Check if signal is a program termination signal or a control #
+# signal. This is not defined by any LSB draft, however, it is #
+# required to check the signals to determine if they are intended #
+# to end a program or simply to control it. #
+# #
+# Inputs: accepts a single string value in the form or -{signal} or {signal} #
+# #
+# Return values: #
+# 0 - Signal is used for program termination #
+# 1 - Signal is used for program control #
+###############################################################################
check_sig_type()
{
local valsig
@@ -580,4 +577,259 @@ check_sig_type()
fi
}
+###############################################################################
+# chkstat() #
+# Usage: chckstat BIN_FILE {CONFIG_FILE} #
+# #
+# Purpose: chk_stat checks the status of a script by checking for both a #
+# binary file to execute, and if set, a config file that may be #
+# needed for the program to run successfully. #
+# #
+# Inputs: accepts first argument of an executable file, and optionally a #
+# second arugument of a configuration file. If BIN_FILE and #
+# CONFIG_FILE are set in the calling environment, either or both #
+# arguments may be omitted. #
+# #
+# Return values: #
+# 0 - The executable, and optionally the configuration file exists #
+# 2 - Invalid or excessive arguments #
+# 5 - BIN_FILE does not exist #
+# 6 - CONFIG_FILE (if set) does not exist #
+###############################################################################
+chk_stat()
+{
+ if [ "${#}" -gt "0" -a "${#}" -lt "3" ]; then
+ BIN_FILE="${1}"
+ if [ -z "${2}" ]; then
+ CONFIG_FILE=""
+ else
+ CONFIG_FILE="${2}"
+ fi
+ elif [ -z "${BIN_FILE}" ]; then
+ echo "Usage: 'chk_stat BIN_FILE CONFIG_FILE'"
+ exit 1 # Generic Error
+ fi
+
+ if [ ! -e "${BIN_FILE}" ]; then
+ log_failure_msg "${BIN_FILE} not installed" &&
+ exit 5
+ fi
+
+ if [ ! -z "${CONFIG_FILE}" ]; then
+ if [ ! -e "${CONFIG_FILE}" ]; then
+ log_failure_msg "${CONFIG_FILE} does not exist" &&
+ exit 6
+ fi
+ fi
+}
+
+###############################################################################
+# loadproc() #
+# Usage: loadproc {arguments} #
+# #
+# Purpose: loadproc is just a wrapper to start_daemon for simple scripts, #
+# which will require no aruguments if $BIN_FILE is set. #
+# #
+# Inputs: Any optional arguments passed to loadproc will be passed on to the #
+# executable defined by $BIN_FILE. #
+# #
+# Return values: (none) #
+###############################################################################
+loadproc()
+{
+ start_daemon "${BIN_FILE}" "${@}"
+}
+
+###############################################################################
+# endproc() #
+# Usage: endproc {arguments} #
+# #
+# Purpose: endproc is just a wrapper to killproc for simple scripts, which #
+# which will require no aruguments if $BIN_FILE is set. #
+# #
+# Inputs: Any optional arguments passed to endproc will be passed on to the #
+# executable defined by $BIN_FILE. #
+# #
+# Return values: (none) #
+###############################################################################
+endproc()
+{
+ killproc "${BIN_FILE}" "${@}"
+}
+
+###############################################################################
+# statusproc() #
+# Usage: statusproc $BIN_FILE $MESSAGE #
+# #
+# Purpose: stautsproc is just a wrapper to pidofproc for simple scripts, #
+# which will require no aruguments if $BIN_FILE and MESSAGE are set. #
+# #
+# Inputs: accepts first argument of an executable file, and a second message #
+# arugument "MESSAGE" to be displayed. If BIN_FILE and MESSAGE are #
+# set in the calling environment, both arguments may be omitted. #
+# #
+# Return values: exit values of pidofproc #
+###############################################################################
+statusproc()
+{
+ if [ "${#}" -gt "0" -a "${#}" -lt "3" ]; then
+ BIN_FILE="${1}"
+ MESSAGE="${2}"
+ elif [ -z "${BIN_FILE}" -o -z "${MESSAGE}" ]; then
+ echo "Usage: 'statusproc BIN_FILE MESSAGE'"
+ exit 1 # Generic Error
+ fi
+
+ pidlist=`pidofproc "${BIN_FILE}"`
+ STATUS=$?
+ echo "Checking ${MESSAGE} status:"
+ if [ "${STATUS}" -eq "0" ]; then
+ log_success_msg "Running with PID(s) ${pidlist}"
+ else
+ log_warning_msg "Not running!"
+ fi
+
+ return "${STATUS}"
+}
+
+###############################################################################
+# reloadproc() #
+# Usage: reloadproc {--force} $BIN_FILE $MESSAGE #
+# #
+# Purpose: reloadproc sends a HUP signal to the running program (relaod #
+# configuration). It optionally, using the -force switch, checks the #
+# status of a particular program and starts it if it is not already #
+# running. #
+# #
+# Inputs: accepts one optional switch (must be the first argument), and #
+# either two, or zero string arguments. If BIN_FILE and MESSAGE are #
+# set in the calling envirnoment it will use those values, else it #
+# requires the bin file as the first argument (following -force if #
+# used), and the message as the second. If the --force argument is #
+# given, it follows the LSB definition of 'force-reload' - the #
+# program is started if not already running. #
+# #
+# Return values: 1 - generic error #
+###############################################################################
+reloadproc()
+{
+ local force="0"
+ if [ "${#}" -gt "0" -a "${1}" = "-force" ]; then
+ force="1"
+ shift 1
+ fi
+
+ if [ "${#}" -gt "0" -a "${#}" -lt "3" ]; then
+ BIN_FILE="${1}"
+ MESSAGE="${2}"
+ elif [ -z "${BIN_FILE}" -o -z "${MESSAGE}" ]; then
+ echo "Usage: 'reloadproc BIN_FILE MESSAGE'"
+ exit 1 # Generic Error
+ fi
+}
+
+###############################################################################
+# evaluate_retval() #
+# Usage: evaluate_retval \ #
+# [standard|start|stop|reload|force-reload|restart|try-restart] #
+# #
+# Purpose: determines the sucess or failure of a previous command based on #
+# LSB exit values, and prints messages to the screen using the #
+# log_*_msg() functions. #
+# #
+# Inputs: accepts one argument which determines the output of the message #
+# displayed on the screen based on the LSB input values for init #
+# scripts. The 'standard' argument makes no changes to the value of #
+# $message or $MESSAGE, but only one can be set in the calling #
+# environment. #
+# #
+# Return values: (none) #
+###############################################################################
+evaluate_retval()
+{
+ local error_value="${?}"
+
+ # Handle LSB defined return values
+ case "${1}" in
+
+ start)
+ case "${error_value}" in
+ 0)
+ log_success_msg "Starting ${MESSAGE} "
+ return "${error_value}"
+ ;;
+ 2)
+ log_failure_msg "Starting ${MESSAGE} Error: Invalid argument!"
+ return "${error_value}"
+ ;;
+ 5)
+ log_failure_msg "Starting ${MESSAGE} Error: Not available!"
+ return "${error_value}"
+ ;;
+ *)
+ log_failure_msg "Starting ${MESSAGE} Error: General failure!"
+ return "${error_value}"
+ ;;
+ esac
+ ;;
+
+ stop)
+ case "${error_value}" in
+ 0)
+ log_success_msg "Stopping ${MESSAGE} "
+ return "${error_value}"
+ ;;
+ 2)
+ log_failure_msg "Stopping ${MESSAGE} Error: Invalid argument!"
+ return "${error_value}"
+ ;;
+ 5)
+ log_failure_msg "Stopping ${MESSAGE} Error: Not available!"
+ return "${error_value}"
+ ;;
+ 7)
+ log_warning_msg "Stopping ${MESSAGE} Warning: Not running!"
+ return "${error_value}"
+ ;;
+ *)
+ log_failure_msg "Stopping ${MESSAGE} Error: General failure!"
+ return "${error_value}"
+ ;;
+ esac
+ ;;
+
+ force-reload)
+ message="Forcefully reloading "
+ ;;
+
+ reload)
+ message="Reloading "
+ ;;
+
+ restart)
+ message="Restarting "
+ ;;
+
+ try-restart)
+ message="Trying restart "
+ ;;
+
+ standard)
+ # $message or $MESSAGE must be set, but not both in order
+ # to use the 'standard' target.
+ ;;
+ esac
+
+ # Print messages for the generic force-reload, reload, restart,
+ # and try-restart targets
+ if [ "${error_value}" -eq "0" ]
+ then
+ log_success_msg "${message}${MESSAGE} "
+ return "${error_value}"
+ else
+ log_failure_msg "${message}${MESSAGE} "
+ return "${error_value}"
+ fi
+}
+
# End /lib/lsb/init-functions