On Sun, 16 May 1999, Andreas Lehmann <[EMAIL PROTECTED]> wrote:
>
> after compiling netatalk under linux (SuSE 6.1, kernel 2.2.5,
> netatalk-1.4b2+asun2.1.3) I want to test it an type:
>
>         /sbin/init.d/atalk start
>
> while I get
>
>
>         #/etc/rc.d/init.d/atalk.init:/etc/rc.d/init.d/functions: No
> such
>         file or directory
>
> which comes from the first line of my /sbin/init.d/atalk, which looks in
> /etc/rc.d/init.d where defenitely no "functions" reside :(.
>
> What am I doing wrong?


Andreas, 

To the best of my knowledge, the 'functions' definition is a Red Hat
Linux peculiarity.  Within the functions file/script, there are 
several routines defined including daemon, killproc, and status which
are employed universally in init scripts to start or stop a process.

Take a look at the functions file I have attached.
-- 

   Craig A. Summerhill, Systems Coordinator and Program Officer
   Coalition for Networked Information
   21 Dupont Circle, N.W., Washington, D.C.   20036
   Internet: [EMAIL PROTECTED]   AT&Tnet (202) 296-5098

#! /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, <[EMAIL PROTECTED]>
# 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.
        case $1 in
            '')    echo '$0: Usage: daemon [+/-nicelevel] {program}'
                   return 1;;
            -*|+*) nicelevel=$1
                   shift;;
             *)    nicelevel=0;;
        esac

        # Save basename.
        base=`basename $1`

        # See if it's already running.
        [ "`pidofproc $base`" != "" ] && return

        # echo basename of the program.
        echo -n "$base "

        # make sure it doesn't core dump anywhere; while this could mask
        # problems with the daemon, it also closes some security problems
        ulimit -c 0

        # And start it up.
        nice -n $nicelevel "$@"
}

# 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 100000
                        dead=`ps aux | awk '{print $2}' | grep $pid`
                        if [ "$dead" != "" ]; then
                                sleep 3
                                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 "/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

        # Next try "pidof"
        pid=`pidof $1`
        if [ "$pid" != "" ] ; then
                echo $pid
                return 0
        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 (pid $pid) is running..."
                return 0
        else
                pid=`ps auxww | grep $1 | egrep -v grep\|$0 | awk '{print $2}'`
                if [ "$pid" != "" ] ; then
                        echo "$1 (pid $pid) is running..."
                        return 0
                fi
        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
}

Reply via email to