Multiple changes - cleanup and udev trigger - see changelog

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@9544 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
DJ Lucas 2011-05-21 17:22:20 +00:00
parent c2db0877b0
commit d93bdd1e25
8 changed files with 448 additions and 402 deletions

View File

@ -1,6 +1,16 @@
2011-05-21 DJ Lucas <dj@linuxfromscratch.org>
* lib/lsb/init-functions: Merged the contents of etc/init.d/lfs-functions and
standardized comment headers.
* etc/init.d/lfs-functions: Removed.
* etc/default/rc, etc/default/rc.site: moved majority of etc/default/rc.site
into etc/default/rc as the configuration items are not generally user
configurable items.
* etc/init.d/udev: Changed trigger commands to use both subsystem and device
types, per udev documentation.
2011-05-18 DJ Lucas <dj@linuxfromscratch.org>
* /sbin/ifup, /sbin/ifdown: Complete rewrite for use as standalone tools
* etc/init.d/network: Rewrote script to account for new ifup and ifdown
* sbin/ifup, sbin/ifdown: Complete rewrite for use as standalone tools.
* etc/init.d/network: Rewrote script to account for new ifup and ifdown.
2011-05-14 DJ Lucas <dj@linuxfromscratch.org>
* etc/default/rc.site: Added FAILURE_ACTION variable for use in remote

View File

@ -26,7 +26,6 @@ create-dirs:
install: create-dirs
install -m ${MODE} etc/init.d/checkfs ${EXTDIR}/init.d/
install -m ${MODE} etc/init.d/cleanfs ${EXTDIR}/init.d/
install -m ${CONFMODE} etc/init.d/lfs-functions ${EXTDIR}/init.d/
install -m ${MODE} etc/init.d/halt ${EXTDIR}/init.d/
install -m ${MODE} etc/init.d/console ${EXTDIR}/init.d/
install -m ${MODE} etc/init.d/localnet ${EXTDIR}/init.d/
@ -75,7 +74,6 @@ install: create-dirs
minimal: create-dirs
install -m ${MODE} etc/init.d/checkfs ${EXTDIR}/init.d/
install -m ${MODE} etc/init.d/cleanfs ${EXTDIR}/init.d/
install -m ${CONFMODE} etc/init.d/lfs-functions ${EXTDIR}/init.d/
install -m ${MODE} etc/init.d/halt ${EXTDIR}/init.d/
install -m ${MODE} etc/init.d/localnet ${EXTDIR}/init.d/
install -m ${MODE} etc/init.d/mountfs ${EXTDIR}/init.d/

View File

@ -9,6 +9,12 @@
# Source site specific rc configuration
. /etc/default/rc.site
# Set base directory information
RC_BASE="/etc"
# Location of network device scripts and config files
NETWORK_DEVICES="/etc/network"
# This sets default terminal options.
# stty sane - this has been removed as nobody recalls
# the reason for it in the first place - if no problems arize,
@ -38,7 +44,56 @@ SET_COL="\\033[${COL}G" # at the $COL char
SET_WCOL="\\033[${WCOL}G" # at the $WCOL char
CURS_UP="\\033[1A\\033[0G" # Up one line, at the 0'th char
# Distro Information
DISTRO="Linux From Scratch" # The distro name
DISTRO_CONTACT="lfs-dev@linuxfromscratch.org" # Bug report address
DISTRO_MINI="lfs" # Short name used in filenames for distro config
# Define custom colors used in messages printed to the screen
BRACKET="\\033[1;34m" # Blue
FAILURE="\\033[1;31m" # Red
INFO="\\033[1;36m" # Cyan
NORMAL="\\033[0;39m" # Grey
SUCCESS="\\033[1;32m" # Green
WARNING="\\033[1;33m" # Yellow
# Prefix boot messages for easier reading on framebuffer consoles
PREFIX_SUCCESS=" ${SUCCESS}*${NORMAL} "
PREFIX_WARNING="${WARNING}**${NORMAL} "
PREFIX_FAILURE="${FAILURE}***${NORMAL}"
# Export the environment variables so they are inherited by the scripts
export PATH SET_COL SET_WCOL CURS_UP BOOTLOG_ENAB
export RC_BASE NETWORK_DEVICES PATH SET_COL SET_WCOL CURS_UP
export DISTRO DISTRO_CONTACT DISTRO_MINI
export BRACKET FAILURE INFO NORMAL SUCCESS WARNING
export PREFIX_SUCCESS PREFIX_WARNING PREFIX_FAILURE
# Interactive startup
dlen="29" # The total length of the distro welcome string
ilen="38" # The total length of the interactive message
welcome_message="Welcome to ${INFO}${DISTRO}${NORMAL}"
i_message="Press '${FAILURE}I${NORMAL}' to enter interactive startup"
# Error message displayed when a script's exit value is not zero
print_error_msg()
{
# ${link} and ${error_value} are defined by the rc script
echo -e "${FAILURE}FAILURE: You should not be reading this error message."
echo -e ""
echo -e -n "${FAILURE}It means that an unforseen error took place in"
echo -e -n "${INFO} ${link}"
echo -e "${FAILURE},"
echo -e "${FAILURE}which exited with a return value of ${error_value}."
echo -e ""
echo -e -n "${FAILURE}If you are able to track this error down to a bug"
echo -e "${FAILURE}in one of the files"
echo -e -n "provided by ${INFO}${DISTRO}${FAILURE}, "
echo -e -n "${FAILURE}please be so kind to inform us at "
echo -e "${INFO}${DISTRO_CONTACT}${FAILURE}.${NORMAL}"
echo -e ""
echo -e "${INFO}Press Enter to continue..."
echo -e "${NORMAL}"
$FAILURE_ACTION
}
# End /etc/default/rc

View File

@ -1,10 +1,3 @@
# Set base directory information
RC_BASE="/etc"
RC_FUNCTIONS="${RC_BASE}/init.d/lfs-functions"
# Location of network device scripts and config files
NETWORK_DEVICES="/etc/network"
# Bootlogging (requires a tempfs mount)
BOOTLOG_ENAB="yes"
@ -19,59 +12,10 @@ CLOCKPARAMS=
# an error is encountered that interupts the boot/shutdown proceess
FAILURE_ACTION="read ENTER"
# Distro Information
DISTRO="Linux From Scratch" # The distro name
DISTRO_CONTACT="lfs-dev@linuxfromscratch.org" # Bug report address
DISTRO_MINI="lfs" # Short name used in filenames for distro config
# Define custom colors used in messages printed to the screen
BRACKET="\\033[1;34m" # Blue
FAILURE="\\033[1;31m" # Red
INFO="\\033[1;36m" # Cyan
NORMAL="\\033[0;39m" # Grey
SUCCESS="\\033[1;32m" # Green
WARNING="\\033[1;33m" # Yellow
# Prefix boot messages for easier reading on framebuffer consoles
PREFIX_SUCCESS=" ${SUCCESS}*${NORMAL} "
PREFIX_WARNING="${WARNING}**${NORMAL} "
PREFIX_FAILURE="${FAILURE}***${NORMAL}"
# Export varialbles so that they are inherited by the initscripts
export RC_BASE RC_FUNCTIONS NETWORK_DEVICES BOOTLOG_ENAB
export HOSTNAME UTC CLOCKPARAMS FAILURE_ACTION
export DISTRO DISTRO_CONTACT DISTRO_MINI
export BRACKET FAILURE INFO NORMAL SUCCESS WARNING
export PREFIX_SUCCESS PREFIX_WARNING PREFIX_FAILURE
export BOOTLOG_ENAB HOSTNAME UTC CLOCKPARAMS FAILURE_ACTION
# Interactive startup
iprompt="yes" # Wether to display the interactive boot promp
itime="2" # The ammount of time (in seconds) to display the prompt
dlen="29" # The total length of the distro welcome string
ilen="38" # The total length of the interactive message
welcome_message="Welcome to ${INFO}${DISTRO}${NORMAL}"
i_message="Press '${FAILURE}I${NORMAL}' to enter interactive startup"
# Error message displayed when a script's exit value is not zero
print_error_msg()
{
# ${link} and ${error_value} are defined by the rc script
echo -e "${FAILURE}FAILURE: You should not be reading this error message."
echo -e ""
echo -e -n "${FAILURE}It means that an unforseen error took place in"
echo -e -n "${INFO} ${link}"
echo -e "${FAILURE},"
echo -e "${FAILURE}which exited with a return value of ${error_value}."
echo -e ""
echo -e -n "${FAILURE}If you are able to track this error down to a bug"
echo -e "${FAILURE}in one of the files"
echo -e -n "provided by ${INFO}${DISTRO}${FAILURE}, "
echo -e -n "${FAILURE}please be so kind to inform us at "
echo -e "${INFO}${DISTRO_CONTACT}${FAILURE}.${NORMAL}"
echo -e ""
echo -e "${INFO}Press Enter to continue..."
echo -e "${NORMAL}"
$FAILURE_ACTION
}

View File

@ -1,214 +0,0 @@
# Begin /etc/init.d/lfs-functions
# Provides LFS specific functions for LSB style bootscripts
################################# chkstat() ###################################
# 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. The calling script will exit with a return value of 5 #
# if the binary does not exist, and a value of 6 if the needed config file is #
# unavailable as per LSB requirements. This function accepts zero, one, or #
# two string arguments. If arguments are passed, the first must be a bin #
# file. If a second argument is passed, it is interpreted as the config #
# file. Optionally, zero arguments can be passed if BIN_FILE, and optinally #
# CONFIG_FILE are set in the calling script. #
###############################################################################
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() ###################################
# loadproc is just a wraper to start_daemon for simple scripts, which will #
# require no arguments if $BIN_FILE is set. #
###############################################################################
loadproc()
{
start_daemon "${BIN_FILE}" "${@}"
}
################################ endproc() ####################################
# endproc, like loadproc, is just a wraper to killproc for simplicity and is #
# dependent on $BIN_FILE being set. #
###############################################################################
endproc()
{
killproc "${BIN_FILE}" "${@}"
}
############################### statusproc() ##################################
# statusproc checks the status of a particular binary and displays the #
# appropriate message (running or not running) and exits on the return value #
# of pidofproc. This function accepts two string arguments or zero arguments #
# if BIN_FILE and MESSAGE are set, else it requires the bin file as the first #
# argument, and the message as the second. Both must be enclosed in quotes. #
###############################################################################
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() ##################################
# 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. This function 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 script's #
# environment, 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. Both must be enclosed in quotes. If the force option is used, it #
# follows the LSB definition of 'force-reload' - the program is started if #
# not already running. #
###############################################################################
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() ###############################
# evaluate_retval requires that you pass exactly one evaluation parameter of #
# (start, stop, other) based on the previous action that is being evaluated. #
# This function is intended for use with start_daemon and killproc to #
# interpret the LSB exit codes properly, othewise the checks only for success #
# or failure. #
################################################################################
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
}

View File

@ -9,8 +9,8 @@
# Should-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Mounts /sys, /proc, and /run virtual (virtel) filesystems.
# Description: Mounts /sys, /proc, and run virtual (virtel) filesystems.
# Short-Description: Mounts /sys, /proc, and /run virtual (kernel) filesystems.
# Description: Mounts /sys, /proc, and run virtual (kernel) filesystems.
# X-LFS-Provided-By: LFS
### END INIT INFO
@ -18,7 +18,7 @@
case "${1}" in
start)
message="Mounting virtel-based file systems:"
message="Mounting virtual file systems:"
if ! mountpoint /proc > /dev/null; then
message="${message}${INFO} /proc${NORMAL}"

View File

@ -73,7 +73,8 @@ case "${1}" in
# Now traverse /sys in order to "coldplug" devices that have
# already been discovered
/sbin/udevadm trigger --action=add
/sbin/udevadm trigger --action=add --type=subsystems
/sbin/udevadm trigger --action=add --type=devices
# Now wait for udevd to process the uevents we triggered
/sbin/udevadm settle

View File

@ -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