CVS: initscripts/rc.d/init.d functions,1.1.1.1,1.2
Jasper Huysmans
jasper at lunar-linux.org
Thu Oct 30 14:10:29 GMT 2003
Update of /var/cvs/lunar/initscripts/rc.d/init.d
In directory dbguin.lunar-linux.org:/tmp/cvs-serv30780
Modified Files:
functions
Log Message:
Add some comments. A few very small tweaks. Reindenting stuff to be the same for all functions (this makes the diff much bigger than was really necessary, sorry).
Index: functions
===================================================================
RCS file: /var/cvs/lunar/initscripts/rc.d/init.d/functions,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- functions 26 Oct 2003 17:14:43 -0000 1.1.1.1
+++ functions 30 Oct 2003 14:10:27 -0000 1.2
@@ -3,6 +3,29 @@
# functions This file contains functions to be used by most or all
# shell scripts in the /etc/init.d directory.
#
+# checkpid()
+# daemon()
+# killproc()
+# pidfileofproc()
+# pidofproc()
+# status()
+# echo_success()
+# echo_failure()
+# echo_passed()
+# echo_warning()
+# update_boot_stage()
+# success()
+# failure()
+# passed()
+# warning()
+# action()
+# strstr()
+# confirm()
+#
+# Besides the function definitions it will set up a safe environment,
+# source the configuration files for startup (/etc/sysconfig/init) and
+# system locale (/etc/sysconfig/i18n) and check the console type.
+#
TEXTDOMAIN=initscripts
@@ -20,24 +43,32 @@
if [ -f /etc/sysconfig/i18n -a -z "${NOLOCALE:-}" ] ; then
. /etc/sysconfig/i18n
+
if [ "$CONSOLETYPE" != "pty" ]; then
- case "${LANG:-}" in
- ja_JP*|ko_KR*|zh_CN*|zh_TW*)
- export LC_MESSAGES=en_US
- ;;
- *)
- export LANG
- ;;
- esac
- else
+ case "${LANG:-}" in
+ ja_JP*|ko_KR*|zh_CN*|zh_TW*)
+ export LC_MESSAGES=en_US
+ ;;
+ *)
export LANG
+ ;;
+ esac
+ else
+ export LANG
fi
fi
# Read in our configuration
if [ -z "${BOOTUP:-}" ]; then
- if [ -f /etc/sysconfig/init ]; then
- . /etc/sysconfig/init
+ if [ "$CONSOLETYPE" = "serial" ]; then
+ BOOTUP=serial
+ MOVE_TO_COL=
+ SETCOLOR_SUCCESS=
+ SETCOLOR_FAILURE=
+ SETCOLOR_WARNING=
+ SETCOLOR_NORMAL=
+ elif [ -f /etc/sysconfig/init ]; then
+ . /etc/sysconfig/init
else
# This all seem confusing? Look in /etc/sysconfig/init,
# or in /usr/doc/initscripts-*/sysconfig.txt
@@ -50,264 +81,263 @@
SETCOLOR_NORMAL="echo -en \\033[0;39m"
LOGLEVEL=1
fi
- if [ "$CONSOLETYPE" = "serial" ]; then
- BOOTUP=serial
- MOVE_TO_COL=
- SETCOLOR_SUCCESS=
- SETCOLOR_FAILURE=
- SETCOLOR_WARNING=
- SETCOLOR_NORMAL=
- fi
fi
if [ "${BOOTUP:-}" != "verbose" ]; then
- INITLOG_ARGS="-q"
+ INITLOG_ARGS="-q"
else
- INITLOG_ARGS=
+ INITLOG_ARGS=
fi
# Check if $pid (could be plural) are running
checkpid() {
- local i
+ local i
- for i in $* ; do
- [ -d "/proc/$i" ] || return 1
- done
- return 0
+ for i in $* ; do
+ [ -d "/proc/$i" ] || return 1
+ done
+ return 0
}
-
+
# A function to start a program.
daemon() {
- # Test syntax.
- local gotbase= force=
- local base= user= nice= bg= pid=
- nicelevel=0
- while [ "$1" != "${1##[-+]}" ]; do
- case $1 in
- '') echo $"$0: Usage: daemon [+/-nicelevel] {program}"
- return 1;;
- --check)
- base=$2
- gotbase="yes"
- shift 2
- ;;
- --check=?*)
- base=${1#--check=}
- gotbase="yes"
- shift
- ;;
- --user)
- user=$2
- shift 2
- ;;
- --user=?*)
- user=${1#--user=}
- shift
- ;;
- --force)
- force="force"
- shift
- ;;
- [-+][0-9]*)
- nice="nice -n $1"
- shift
- ;;
- *) echo $"$0: Usage: daemon [+/-nicelevel] {program}"
- return 1;;
- esac
- done
+ local gotbase= force=
+ local base= user= nice= bg= pid=
- # Save basename.
- [ -z "$gotbase" ] && base=${1##*/}
+ # Test syntax.
+ if [ "$#" -eq 0 ]; then
+ echo $"$0: Usage: daemon [+/-nicelevel] {program}"
+ return 1
+ fi
- # See if it's already running. Look *only* at the pid file.
- if [ -f /var/run/${base}.pid ]; then
- local line p
- read line < /var/run/${base}.pid
- for p in $line ; do
- [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] && pid="$pid $p"
- done
- fi
-
- [ -n "${pid:-}" -a -z "${force:-}" ] && return
+ while [ "$1" != "${1##[-+]}" ]; do
+ case $1 in
+ --check)
+ base=$2
+ gotbase="yes"
+ shift 2
+ ;;
+ --check=?*)
+ base=${1#--check=}
+ gotbase="yes"
+ shift
+ ;;
+ --user)
+ user=$2
+ shift 2
+ ;;
+ --user=?*)
+ user=${1#--user=}
+ shift
+ ;;
+ --force)
+ force="force"
+ shift
+ ;;
+ [-+][0-9]*)
+ nice="nice -n $1"
+ shift
+ ;;
+ *) echo $"$0: Usage: daemon [+/-nicelevel] {program}"
+ return 1;;
+ esac
+ done
- # make sure it doesn't core dump anywhere; while this could mask
- # problems with the daemon, it also closes some security problems
- ulimit -S -c 0 >/dev/null 2>&1
-
- # if they set NICELEVEL in /etc/sysconfig/foo, honor it
- [ -n "$NICELEVEL" ] && nice="nice -n $NICELEVEL"
-
- # Echo daemon
- [ "${BOOTUP:-}" = "verbose" -a -z "$LSB" ] && echo -n " $base"
+ # Save basename.
+ [ -z "$gotbase" ] && base=${1##*/}
- # And start it up.
- if [ -z "$user" ]; then
- $nice initlog $INITLOG_ARGS -c "$*"
- else
- $nice initlog $INITLOG_ARGS -c "su -s /bin/bash - $user -c \"$*\""
- fi
- [ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"
+ # See if it's already running unless 'force' is defined.
+ # Look *only* at the pid file.
+ if [ -z "${force}" -a -f /var/run/${base}.pid ]; then
+ local line p
+ read line < /var/run/${base}.pid
+ for p in $line ; do
+ [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] && return
+ done
+ fi
+
+ # make sure it doesn't core dump anywhere; while this could mask
+ # problems with the daemon, it also closes some security problems
+ ulimit -S -c 0 >/dev/null 2>&1
+
+ # if they set NICELEVEL in /etc/sysconfig/foo, honor it
+ [ -n "$NICELEVEL" ] && nice="nice -n $NICELEVEL"
+
+ # Echo daemon
+ [ "${BOOTUP:-}" = "verbose" -a -z "$LSB" ] && echo -n " $base"
+
+ # And start it up.
+ if [ -z "$user" ]; then
+ $nice initlog $INITLOG_ARGS -c "$*"
+ else
+ $nice initlog $INITLOG_ARGS -c "su -s /bin/bash - $user -c \"$*\""
+ fi
+
+ [ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"
}
# A function to stop a program.
killproc() {
- RC=0
- # Test syntax.
- if [ "$#" -eq 0 ]; then
- echo $"Usage: killproc {program} [signal]"
- return 1
- fi
+ RC=0
- notset=0
- # check for second arg to be kill level
- if [ -n "$2" ]; then
- killlevel=$2
- else
- notset=1
- killlevel="-9"
- fi
+ # Test syntax.
+ if [ "$#" -eq 0 ]; then
+ echo $"Usage: killproc {program} [signal]"
+ return 1
+ fi
- # Save basename.
- base=${1##*/}
+ notset=0
+ # check for second arg to be kill level
+ if [ -n "$2" ]; then
+ killlevel=$2
+ else
+ notset=1
+ killlevel="-9"
+ fi
- # Find pid.
- pid=
- if [ -f /var/run/${base}.pid ]; then
- local line p
- read line < /var/run/${base}.pid
- for p in $line ; do
- [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] && pid="$pid $p"
- done
- fi
- if [ -z "$pid" ]; then
- pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \
+ # Save basename.
+ base=${1##*/}
+
+ # Find pid.
+ pid=
+ if [ -f /var/run/${base}.pid ]; then
+ local line p
+ read line < /var/run/${base}.pid
+ for p in $line ; do
+ [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] && pid="$pid $p"
+ done
+ fi
+ if [ -z "$pid" ]; then
+ pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \
pidof -o $$ -o $PPID -o %PPID -x $base`
- fi
+ fi
- # Kill it.
- if [ -n "${pid:-}" ] ; then
- [ "$BOOTUP" = "verbose" -a -z "$LSB" ] && echo -n "$base "
- if [ "$notset" -eq "1" ] ; then
- if checkpid $pid 2>&1; then
- # TERM first, then KILL if not dead
- kill -TERM $pid
- usleep 100000
- if checkpid $pid && sleep 1 &&
- checkpid $pid && sleep 3 &&
- checkpid $pid ; then
- kill -KILL $pid
- usleep 100000
- fi
- fi
- checkpid $pid
- RC=$?
- [ "$RC" -eq 0 ] && failure $"$base shutdown" || success $"$base shutdown"
- RC=$((! $RC))
- # use specified level only
- else
- if checkpid $pid; then
- kill $killlevel $pid
- RC=$?
- [ "$RC" -eq 0 ] && success $"$base $killlevel" || failure $"$base $killlevel"
- fi
- fi
- else
- failure $"$base shutdown"
- RC=1
+ # Kill it.
+ if [ -n "${pid:-}" ] ; then
+ [ "$BOOTUP" = "verbose" -a -z "$LSB" ] && echo -n "$base "
+ if [ "$notset" -eq "1" ] ; then
+ if checkpid $pid 2>&1; then
+ # TERM first, then KILL if not dead
+ kill -TERM $pid
+ usleep 100000
+ if checkpid $pid && sleep 1 &&
+ checkpid $pid && sleep 3 &&
+ checkpid $pid ; then
+ kill -KILL $pid
+ usleep 100000
fi
+ fi
+ checkpid $pid
+ RC=$?
+ [ "$RC" -eq 0 ] && failure $"$base shutdown" || success $"$base shutdown"
+ RC=$((! $RC))
+ # use specified level only
+ else
+ if checkpid $pid; then
+ kill $killlevel $pid
+ RC=$?
+ [ "$RC" -eq 0 ] && success $"$base $killlevel" || failure $"$base $killlevel"
+ fi
+ fi
+ else
+ failure $"$base shutdown"
+ RC=1
+ fi
- # Remove pid file if any.
- if [ "$notset" = "1" ]; then
- rm -f /var/run/$base.pid
- fi
- return $RC
+ # Remove pid file if any.
+ if [ "$notset" = "1" ]; then
+ rm -f /var/run/$base.pid
+ fi
+
+ return $RC
}
# A function to find the pid of a program. Looks *only* at the pidfile
pidfileofproc() {
- local base=${1##*/}
-
- # Test syntax.
- if [ "$#" = 0 ] ; then
- echo $"Usage: pidfileofproc {program}"
- return 1
- fi
+ local base=${1##*/}
+
+ # Test syntax.
+ if [ "$#" = 0 ] ; then
+ echo $"Usage: pidfileofproc {program}"
+ return 1
+ fi
- # First try "/var/run/*.pid" files
- if [ -f /var/run/$base.pid ] ; then
- local line p pid=
- read line < /var/run/$base.pid
- for p in $line ; do
- [ -z "${p//[0-9]/}" -a -d /proc/$p ] && pid="$pid $p"
- done
- if [ -n "$pid" ]; then
- echo $pid
- return 0
- fi
- fi
+ if [ -f /var/run/$base.pid ] ; then
+ local line p pid=
+ read line < /var/run/$base.pid
+ for p in $line ; do
+ [ -z "${p//[0-9]/}" -a -d /proc/$p ] && pid="$pid $p"
+ done
+ if [ -n "$pid" ]; then
+ echo $pid
+ return 0
+ fi
+ fi
}
# A function to find the pid of a program.
pidofproc() {
- base=${1##*/}
+ base=${1##*/}
- # Test syntax.
- if [ "$#" = 0 ]; then
- echo $"Usage: pidofproc {program}"
- return 1
- fi
+ # Test syntax.
+ if [ "$#" = 0 ]; then
+ echo $"Usage: pidofproc {program}"
+ return 1
+ fi
- # First try "/var/run/*.pid" files
- if [ -f /var/run/$base.pid ]; then
- local line p pid=
- read line < /var/run/$base.pid
- for p in $line ; do
- [ -z "${p//[0-9]/}" -a -d /proc/$p ] && pid="$pid $p"
- done
- if [ -n "$pid" ]; then
- echo $pid
- return 0
- fi
- fi
- pidof -o $$ -o $PPID -o %PPID -x $1 || \
- pidof -o $$ -o $PPID -o %PPID -x $base
+ # First try "/var/run/*.pid" files
+ if [ -f /var/run/$base.pid ]; then
+ local line p pid=
+ read line < /var/run/$base.pid
+ for p in $line ; do
+ [ -z "${p//[0-9]/}" -a -d /proc/$p ] && pid="$pid $p"
+ done
+ if [ -n "$pid" ]; then
+ echo $pid
+ return 0
+ fi
+ fi
+
+ pidof -o $$ -o $PPID -o %PPID -x $1 || \
+ pidof -o $$ -o $PPID -o %PPID -x $base
}
status() {
- local base=${1##*/}
- local pid
+ local base=${1##*/}
+ local pid
- # Test syntax.
- if [ "$#" = 0 ] ; then
- echo $"Usage: status {program}"
- return 1
- fi
+ # Test syntax.
+ if [ "$#" = 0 ] ; then
+ echo $"Usage: status {program}"
+ return 1
+ fi
- # First try "pidof"
- pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \
+ # First try "pidof"
+ pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \
pidof -o $$ -o $PPID -o %PPID -x ${base}`
- if [ -n "$pid" ]; then
- echo $"${base} (pid $pid) is running..."
- return 0
- fi
+ if [ -n "$pid" ]; then
+ echo $"${base} (pid $pid) is running..."
+ return 0
+ fi
- # Next try "/var/run/*.pid" files
- if [ -f /var/run/${base}.pid ] ; then
- read pid < /var/run/${base}.pid
- if [ -n "$pid" ]; then
- echo $"${base} dead but pid file exists"
- return 1
- fi
- fi
- # See if /var/lock/subsys/${base} exists
- if [ -f /var/lock/subsys/${base} ]; then
- echo $"${base} dead but subsys locked"
- return 2
- fi
- echo $"${base} is stopped"
- return 3
+ # Next try "/var/run/*.pid" files
+ if [ -f /var/run/${base}.pid ] ; then
+ read pid < /var/run/${base}.pid
+ if [ -n "$pid" ]; then
+ echo $"${base} dead but pid file exists"
+ return 1
+ fi
+ fi
+
+ # See if /var/lock/subsys/${base} exists
+ if [ -f /var/lock/subsys/${base} ]; then
+ echo $"${base} dead but subsys locked"
+ return 2
+ fi
+
+ echo $"${base} is stopped"
+ return 3
}
echo_success() {
@@ -365,12 +395,12 @@
# Log that something succeeded
success() {
if [ -z "${IN_INITLOG:-}" ]; then
- initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
+ initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
else
# silly hack to avoid EPIPE killing rc.sysinit
- trap "" SIGPIPE
- echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 1" >&21
- trap - SIGPIPE
+ trap "" SIGPIPE
+ echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 1" >&21
+ trap - SIGPIPE
fi
[ "$BOOTUP" != "verbose" -a -z "$LSB" ] && echo_success
return 0
@@ -380,11 +410,11 @@
failure() {
rc=$?
if [ -z "${IN_INITLOG:-}" ]; then
- initlog $INITLOG_ARGS -n $0 -s "$1" -e 2
+ initlog $INITLOG_ARGS -n $0 -s "$1" -e 2
else
- trap "" SIGPIPE
- echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 2" >&21
- trap - SIGPIPE
+ trap "" SIGPIPE
+ echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 2" >&21
+ trap - SIGPIPE
fi
[ "$BOOTUP" != "verbose" -a -z "$LSB" ] && echo_failure
return $rc
@@ -394,11 +424,11 @@
passed() {
rc=$?
if [ -z "${IN_INITLOG:-}" ]; then
- initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
+ initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
else
- trap "" SIGPIPE
- echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 1" >&21
- trap - SIGPIPE
+ trap "" SIGPIPE
+ echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 1" >&21
+ trap - SIGPIPE
fi
[ "$BOOTUP" != "verbose" -a -z "$LSB" ] && echo_passed
return $rc
@@ -408,11 +438,11 @@
warning() {
rc=$?
if [ -z "${IN_INITLOG:-}" ]; then
- initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
+ initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
else
- trap "" SIGPIPE
- echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 1" >&21
- trap - SIGPIPE
+ trap "" SIGPIPE
+ echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 1" >&21
+ trap - SIGPIPE
fi
[ "$BOOTUP" != "verbose" -a -z "$LSB" ] && echo_warning
return $rc
@@ -438,15 +468,15 @@
# Confirm whether we really want to run this service
confirm() {
while : ; do
- echo -n $"Start service $1 (Y)es/(N)o/(C)ontinue? [Y] "
- read answer
- if strstr $"yY" "$answer" || [ "$answer" = "" ] ; then
- return 0
- elif strstr $"cC" "$answer" ; then
- rm -f /var/run/confirm
- return 2
- elif strstr $"nN" "$answer" ; then
- return 1
- fi
+ echo -n $"Start service $1 (Y)es/(N)o/(C)ontinue? [Y] "
+ read answer
+ if strstr $"yY" "$answer" || [ "$answer" = "" ] ; then
+ return 0
+ elif strstr $"cC" "$answer" ; then
+ rm -f /var/run/confirm
+ return 2
+ elif strstr $"nN" "$answer" ; then
+ return 1
+ fi
done
}
More information about the Lunar-commits
mailing list