diff options
Diffstat (limited to 'rc.d/init.d/functions')
-rwxr-xr-x | rc.d/init.d/functions | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/rc.d/init.d/functions b/rc.d/init.d/functions new file mode 100755 index 00000000..e3b1494e --- /dev/null +++ b/rc.d/init.d/functions @@ -0,0 +1,139 @@ +#! /bin/sh +# +# functions This file contains functions to be used by most or all +# shell scripts in the /etc/init.d directory. +# +# Version: @(#) /etc/init.d/functions 1.01 26-Oct-1993 +# +# Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org> +# Hacked by: Greg Galloway and Marc Ewing +# + +# First set up a default search path. +export PATH="/sbin:/usr/sbin:/bin:/usr/bin" + +# A function to start a program. +daemon() { + # Test syntax. + if [ $# = 0 ]; then + echo "Usage: daemon {program}" + return 1 + fi + + # Save basename. + base=`basename $1` + + # See if it's already running. + [ "`pidofproc $base`" != "" ] && return + + # echo basename of the program. + echo -n "$base " + + # And start it up. + $* +} + +# A function to stop a program. +killproc() { + # Test syntax. + if [ $# = 0 ]; then + echo "Usage: killproc {program} [signal]" + return 1 + fi + + notset=0 + # check for second arg to be kill level + if [ "$2" != "" ] ; then + killlevel=$2 + else + notset=1 + killlevel="-9" + fi + + # Save basename. + base=`basename $1` + + # Find pid. + pid=`pidofproc $base` + + # Kill it. + if [ "$pid" != "" ] ; then + echo -n "$base " + if [ "$notset" = 1 ] ; then + # TERM first, then KILL if not dead + kill -TERM $pid + usleep 10000 + dead=`ps aux | awk "{print $2}" | grep $pid` + if [ "$dead" != "" ]; then + sleep 4 + kill -KILL $pid + fi + # use specified level only + else + kill $killlevel $pid + fi + fi + + # Remove pid file if any. + rm -f /var/run/$base.pid +} + +# A function to find the pid of a program. +pidofproc() { + # Test syntax. + if [ $# = 0 ] ; then + echo "Usage: pidofproc {program}" + return 1 + fi + + # First try "pidof" + pid=`pidof $1` + if [ "$pid" != "" ] ; then + echo $pid + return 0 + fi + + # Next try "/var/run/*.pid" files + if [ -f /var/run/$1.pid ] ; then + pid=`head -1 /var/run/$1.pid` + if [ "$pid" != "" ] ; then + echo $pid + return 0 + fi + fi + + # Finally try to extract it from ps + ps auxw | awk 'BEGIN { prog=ARGV[1]; ARGC=1 } + { if ((prog == $11) || (("(" prog ")") == $11) || + ((prog ":") == $11)) { print $2 } }' $1 +} +status() { + # Test syntax. + if [ $# = 0 ] ; then + echo "Usage: status {program}" + return 1 + fi + + # First try "pidof" + pid=`pidof $1` + if [ "$pid" != "" ] ; then + echo "$1 is running..." + return 0 + fi + + # Next try "/var/run/*.pid" files + if [ -f /var/run/$1.pid ] ; then + pid=`head -1 /var/run/$1.pid` + if [ "$pid" != "" ] ; then + echo "$1 dead but pid file exists" + return 1 + fi + fi + # See if /var/lock/subsys/$1 exists + if [ -f /var/lock/subsys/$1 ]; then + echo "$1 dead but subsys locked" + return 2 + fi + echo "$1 is stopped" + return 3 +} |