diff options
author | Bruce Dubbs <bdubbs@linuxfromscratch.org> | 2011-08-02 02:15:42 +0000 |
---|---|---|
committer | Bruce Dubbs <bdubbs@linuxfromscratch.org> | 2011-08-02 02:15:42 +0000 |
commit | 0cda8984a835f37a573c0e2eb31676ff52773d16 (patch) | |
tree | 15144b985754fc6ac96540d091ef7682694c5781 /bootscripts/contrib/lsb/lib/init-functions | |
parent | 75fe59983cbfe4a5e5cec2a161cda0491162908c (diff) |
Rewrite bootscripts and Chaper 7
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@9574 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
Diffstat (limited to 'bootscripts/contrib/lsb/lib/init-functions')
-rw-r--r-- | bootscripts/contrib/lsb/lib/init-functions | 348 |
1 files changed, 0 insertions, 348 deletions
diff --git a/bootscripts/contrib/lsb/lib/init-functions b/bootscripts/contrib/lsb/lib/init-functions deleted file mode 100644 index 3f1ec2400..000000000 --- a/bootscripts/contrib/lsb/lib/init-functions +++ /dev/null @@ -1,348 +0,0 @@ - -#******************************************************************************* -# Function - start_daemon [-f] [-n nicelevel] [-p pidfile] pathname [args] -# -# Purpose: This runs the specified program as a daemon -# -# Inputs: -f, run the program even if it is already running -# -n nicelevel, specifies a nice level. See nice(1). -# -p pidfile, uses the specified pidfile -# pathname, pathname to the specified program -# args, arguments to pass to specified program -# -# Outputs: return 0 - Success -# return 2 - Invalid or excessive number of arguments, -# warning in stdout -# return 4 - Program or service status is unknown -# -# Dependencies: nice -# -# Todo: none -# -#******************************************************************************* -start_daemon() -{ - local pidfile="" - local forcestart="" - local nicelevel="0" - - while true - do - case "${1}" in - -f) - forcestart="1" - shift 1 - ;; - -n) - nicelevel="${2}" - shift 2 - ;; - -p) - pidfile="${2}" - shift 2 - ;; - -*) - log_failure_msg "Unknown Option: ${1}" - return 2 - ;; - *) - break - ;; - esac - done - - if [ -z "${forcestart}" ]; then - if [ -z "${pidfile}" ]; then - pidofproc "${1}" > /dev/null - else - pidofproc -p "${pidfile}" "${1}" > /dev/null - fi - - case "${?}" in - 0) - log_warning_msg "Unable to continue: ${1} is running" - return 4 - ;; - 1) - log_warning_msg "Unable to continue: ${pidfile} exists" - return 4 - ;; - 3) - ;; - *) - log_failure_msg "Unknown error code from pidofproc: ${?}" - return 4 - ;; - esac - fi - - nice -n "${nicelevel}" "${@}" -} - -#******************************************************************************* -# Function - killproc [-p pidfile] pathname [signal] -# -# Purpose: -# -# Inputs: -p pidfile, uses the specified pidfile -# pathname, pathname to the specified program -# signal, send this signal to pathname -# -# Outputs: return 0 - Success -# return 1 - Invalid or excessive number of arguments, -# warning in stdout -# return 4 - Unknown Status -# -# Dependencies: kill -# -# Todo: test -# -#******************************************************************************* -killproc() -{ - local pidfile="" - local killsig="" - local pidlist="" - while true - do - case "${1}" in - -p) - pidfile="${2}" - shift 2 - ;; - -*) - log_failure_msg "Unknown Option: ${1}" - return 1 - ;; - *) - break - ;; - esac - done - - if [ "${#}" = "2" ]; then - killsig="${2}" - elif [ "${#}" != "1" ]; then - shift 2 - log_failure_msg "Excess Arguments: $@" - return 1 - fi - - if [ -z "${pidfile}" ]; then - pidlist=`pidofproc "${1}"` - else - pidlist=`pidofproc -p "${pidfile}" "${1}"` - fi - - for pid in ${pidlist} - do - kill -${killsig:-TERM} ${pid} 2> /dev/null - if [ -z "${killsig}" ]; then - # Wait up to 3 seconds, for ${pid} to terminate - local dtime=3 - while [ "${dtime}" != "0" ] - do - kill -0 ${pid} 2> /dev/null || break - sleep 1 - dtime=$(( ${dtime} - 1)) - done - # If ${pid} is still running, kill it - kill -0 ${pid} 2> /dev/null && kill -KILL ${pid} 2> /dev/null - fi - done - - if [ -z "${killsig}" ]; then - pidofproc "${1}" 2>&1 > /dev/null - - # Program was terminated - if [ "$?" != "0" ]; then - # Pidfile Exists - if [ -f "${pidfile}" ]; then - rm -f "${pidfile}" 2>&1 > /dev/null - fi - return 0 - else # Program is still running - return 4 # Unknown Status - fi - else - if [ -z "${pidfile}" ]; then - pidofproc "${1}" 2> /dev/null - else - pidofproc -p "${pidfile}" "${1}" 2> /dev/null - fi - fi -} - -#******************************************************************************* -# Function - 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 -# -# Outputs: return 0 - Success, pid's in stdout -# return 1 - Invalid or excessive number of arguments, -# warning in stdout -# return 1 - Program is dead, pidfile exists -# return 3 - Program is not running -# -# Dependencies: pidof, echo -# -# Todo: - Invalid or excessive argments, and program is dead pidfile exists -# conflict with eachother -# -#******************************************************************************* -pidofproc() -{ - local pidfile="" - local lpids="" - local pidlist="" - while true - do - case "${1}" in - -p) - pidfile="${2}" - shift 2 - ;; - -*) - log_failure_msg "Unknown Option: ${1}" - return 1 - ;; - *) - break - ;; - esac - done - - if [ "${#}" != "1" ]; then - shift 1 - log_failure_msg "Excess Arguments: $@" - return 1 - fi - - if [ -n "${pidfile}" ]; then - if [ ! -r "${pidfile}" ]; then - return 3 # Program is not running - fi - - lpids=`head -n 1 ${pidfile}` - for pid in ${lpids} - do - if [ "${pid}" -ne "$$" -a "${pid}" -ne "${PPID}" ]; then - kill -0 "${pid}" 2> /dev/null && - pidlist="${pidlist} ${pid}" - fi - echo ${pidlist} - test -z "${pidlist}" && return 1 # Program is dead, pidfile exists - return 0 - done - - else - pidof "${1}" - fi - - if [ "$?" != "0" ]; then - return 3 # Program is not running - fi -} - -# Screen Dimentions -if [ -z "${COLUMNS}" ]; then - COLUMNS=$(stty size) - COLUMNS=${COLUMNS##* } -fi - -# When using remote connections, such as a serial port, stty size returns 0 -if [ "${COLUMNS}" = "0" ]; then - COLUMNS=80 -fi - -# Measurements for positioning result messages -COL=$((${COLUMNS} - 8)) -WCOL=$((${COL} - 2)) - -# Set Cursur Position Commands, used via echo -e -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 - -# Set color commands, used via echo -e -# Please consult `man console_codes` for more information -# under the "Set Graphics Resolution" section -# -# Warning, when switching from a 8bit to a 9bit font, -# the linux console will reinterpret the bold (1;) to -# the top 256 glyphs of the 9bit font. This does -# not affect framebuffer consoles -NORMAL="\\033[0;39m" # Standard console grey -SUCCESS="\\033[1;32m" # Success is green -WARNING="\\033[1;33m" # Warnings are yellow -FAILURE="\\033[1;31m" # Failures are red -INFO="\\033[1;36m" # Information is light cyan -BRACKET="\\033[1;34m" # Brackets are blue - -BOOTMESG_PREFIX=" * " # Text at the beginning of every line - - -#******************************************************************************* -# Function - log_success_msg "message" -# -# Purpose: Print a success message -# -# Inputs: -# -# Outputs: -# -# Dependencies: echo -# -# Todo: logging -# -#******************************************************************************* -log_success_msg() -{ - echo -n -e "${BOOTMESG_PREFIX}${@}" - echo -e "${SET_COL}""${BRACKET}""[""${SUCCESS}"" OK ""${BRACKET}""]""${NORMAL}" - return 0 -} - -#******************************************************************************* -# Function - log_failure_msg "message" -# -# Purpose: Print a failure message -# -# Inputs: $@ - Message -# -# Outputs: Text output to screen -# -# Dependencies: echo -# -# Todo: logging -# -#******************************************************************************* -log_failure_msg() { - echo -n -e "${BOOTMESG_PREFIX}${@}" - echo -e "${SET_COL}""${BRACKET}""[""${FAILURE}"" FAIL ""${BRACKET}""]""${NORMAL}" - return 0 -} - -#******************************************************************************* -# Function - log_warning_msg "message" -# -# Purpose: print a warning message -# -# Inputs: $@ - Message -# -# Outputs: Text output to screen -# -# Dependencies: echo -# -# Todo: logging -# -#******************************************************************************* -log_warning_msg() { - echo -n -e "${BOOTMESG_PREFIX}${@}" - echo -e "${SET_COL}""${BRACKET}""[""${WARNING}"" WARN ""${BRACKET}""]""${NORMAL}" - return 0 -} - |