mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-06-19 11:49:20 +01:00
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:
parent
c2db0877b0
commit
d93bdd1e25
@ -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
|
||||
|
@ -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/
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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}"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user