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
}