[Techtalk] killproc

Maria McKinley maria at shadlen.org
Tue Jan 2 20:36:23 UTC 2007


Hi there,

I run debian, and I have a script I want to stick in /etc/init.d/, but 
it calls the function killproc, which does not seem to be available in 
the debian package system. Does anyone know how killproc works, and how 
I can re-write the line using kill?

killproc $MATHLM_BINARY 15

This same script calls . /etc/init.d/functions, which looks like it is a 
redhat thing, and commenting it out seems to have no ill effect.

Finally, this line:
[ ${NETWORKING} = "no" ] && exit 1

causes this error:

/etc/init.d/mathlm: line 24: [: =: unary operator expected

Any ideas on any of these issues? I've attached the script, in case that 
makes life easier.

thanks,
maria


-------------- next part --------------
#!/bin/bash
#
# mathlm	This shell script takes care of starting and stopping
#		MathLM for Linux - Mathematica Network License Manager.
# 		Written by Charles Pooh and Onkar Singh (Wolfram Research)
#		
# chkconfig: 2345 80 30
# description: MathLM is the Mathematica Network License Manager
# processname: mathlm
# config: /etc/mathlm.conf
# version: 1.0.0


# Source function library.

. /etc/init.d/functions

# Source networking configuration.

[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network

# Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 1

# Setting options

MATHLM_BINARY=/usr/sbin/mathlm
MATHLM_OPTIONS=''
RETVAL=0

[ -f /etc/mathlm.conf ] && . /etc/mathlm.conf

[ -n "$MATHLM_LANGUAGE" ] && MATHLM_OPTIONS="$MATHLM_OPTIONS -language $MATHLM_LANGUAGE"
[ -n "$MATHLM_LOCALTIME" ] && MATHLM_OPTIONS="$MATHLM_OPTIONS -localtime $MATHLM_LOCALTIME"
[ -n "$MATHLM_LOGFILE" ] && MATHLM_OPTIONS="$MATHLM_OPTIONS -logfile $MATHLM_LOGFILE"
[ -n "$MATHLM_LOGFORMAT" ] && MATHLM_OPTIONS="$MATHLM_OPTIONS -logformat $MATHLM_LOGFORMAT"
[ -n "$MATHLM_LOGLEVEL" ] && MATHLM_OPTIONS="$MATHLM_OPTIONS -loglevel $MATHLM_LOGLEVEL"
[ "$MATHLM_REMOTEMONITOR" = "NO" ] && MATHLM_OPTIONS="$MATHLM_OPTIONS -noremotemonitor"
[ -n "$MATHLM_PWFILE" ] && MATHLM_OPTIONS="$MATHLM_OPTIONS -pwfile $MATHLM_PWFILE"
[ -n "$MATHLM_RESTRICT" ] && MATHLM_OPTIONS="$MATHLM_OPTIONS -restrict $MATHLM_RESTRICT"
[ -n "$MATHLM_TIMEOUT" ] && MATHLM_OPTIONS="$MATHLM_OPTIONS -timeout $MATHLM_TIMEOUT"
[ -n "$MATHLM_TRFILE" ] && MATHLM_OPTIONS="$MATHLM_OPTIONS -trfile $MATHLM_TRFILE"

# Check mathlm binary

[ -x $MATHLM_BINARY ] || exit 2

# Start mathlm daemon

start() {
	# Check if mathlm is already running
        pid=`pidof -o $$ -o $PPID -o %PPID -x $MATHLM_BINARY`
        if [ -n "$pid" ]; then
                echo $"mathlm (pid $pid) is already running..."
                return 3
        fi

	# Start mathlm
        echo -n $"Starting mathlm: "
	ulimit -S -c ${DAEMON_COREFILE_LIMIT:-0} > /dev/null 2>&1
	$MATHLM_BINARY $MATHLM_OPTIONS > /dev/null 2>&1
	pid=`pidof -c -o $$ -o $PPID -o %PPID -x $MATHLM_BINARY`
	checkpid $pid 2>&1
	RETVAL=$?	
	[ $RETVAL -eq 0 ] && success $"MathLM startup" || failure $"MathLM startup"
        echo
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mathlm
	[ $RETVAL -eq 0 ] && logger $"MathLM: started mathlm successfully (pid = $pid, log file = $MATHLM_LOGFILE)." \
			  || logger $"MathLM: mathlm failed to start (see log file = $MATHLM_LOGFILE)."
	return $RETVAL
}

# Stop mathlm daemon

stop() {
        echo -n $"Shutting down mathlm: "
        killproc $MATHLM_BINARY 15
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mathlm
	[ $RETVAL -eq 0 ] && logger $"MathLM: mathlm stopped or is not running." \
		          || logger $"MathLM: mathlm failed to stop."
        return $RETVAL
}

# See how we were called.

case "$1" in
  start)
        start
	RETVAL=$?
        ;;
  stop)
        stop
	RETVAL=$?
        ;;
  restart|reload)
        stop
        start
	RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/mathlm ]; then
            stop
	    start
	    RETVAL=$?
        fi
        ;;
  status)
        status $MATHLM_BINARY
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 1
esac

exit $RETVAL


More information about the Techtalk mailing list