[JDEV] Jabberd in Startup on Linux

Peter Gebauer peter-jabber at restamus.org
Thu Mar 28 05:13:16 CST 2002


On Wed, Mar 27, 2002 at 07:03:56PM -0500, Mike Sassak wrote:
> The following 'old-fashioned way' won't get you the convenience of using
> 'chkconfig', 'service', etc. but it does work. 
> 
> Just add these two lines to the end of /etc/rc.d/rc.local:

Old-fashioned and deprecated, you Slackware fan you! :-)

A good thing when init-scripts behave like that is to check output and logs.

Secondly, I don't know about RH, but all other dists I've used have a 
skeleton init-script to be copied and modified for creating new 
init-scripts.
It should take arguments "start", "stop" an "restart" as a minimum. You 
should exit with correct codes to tell the daemon script if start really was 
OK or not.
That's the way to do it.

For using the script at http://www.bluecows.com/scripts/jabberd.start make 
sure your Jabber server actualy is in "/opt". According to Linux standards 
anything not distribution related should end up in "/usr/local", I think 
"/opt" is an invention of Sun?

Hehe, standards are nice only if used. ;-)

I'm including a small init-script. It does not use the nice color stuff that 
RH and other RH-based dists use, but it works fine on my Debian and 
Slackware.

/P

---

#!/bin/bash
#
# jabber	Will start, stop and restart Jabber daemon at will.
#
#		Written by Peter Gebauer <peter at restamus.org>.
#		Modified for the Jabber mailing list <jdev at jabber.org>.
#

# This should be changed to wherever your stuff is:
INSTALLED=/usr/local

# This should be changed to wherever your Jabber dist is:
JABBERDIR=$INSTALLED/src/jabber

# This should be changed to where your Jabber daemon PID-file is:
PIDFILE=$JABBERDIR/jabber.pid

# This should be changed to where your Jabber daemon binary is:
JABBERD=$JABBERDIR/jabberd/jabberd


DAEMON=jabberd
NAME=jabber
DESC="Jabber daemon"
THIS=/etc/init.d/$NAME

if [ ! -x $JABBERBIN ]; then
	echo "Could not find executable $JABBERBIN!"
	echo "You need to configure $THIS with correct paths."
	exit 4
fi

case "$1" in
  start)
	echo -n "Starting $DESC: "
	if [ -e "$PIDFILE" ]; then
		PIDNUM=`cat $PIDFILE`
	fi
	if [ -n "$PIDNUM" ] && [ -n "$DAEMON" ]; then
		ISRUNNING=`ps -A | grep $PIDNUM | grep $DAEMON`
	fi
	if [ -n "$ISRUNNING" ]; then
		echo "already running! (PID: $PIDNUM)"
		exit 101
	fi
	nohup $JABBERD >/dev/null 2>&1 &
	if [ "$?" -ne 0 ]; then
		echo "failed to start!"
		exit 102
	fi
	echo "OK."
	;;
  stop)
	echo -n "Stopping $DESC: "
	if [ -e "$PIDFILE" ]; then
		PIDNUM=`cat $PIDFILE`
	fi
	if [ -n "$PIDNUM" ]; then
		kill -TERM $PIDNUM > /dev/null 2>&1
		KILLRESULT=$?
	fi
	if [ -z "$PIDNUM" ] || [ "$KILLRESULT" -ne 0 ]; then
		echo -n "Killing all processes named $DAEMON: "
		killall -TERM $DAEMON > /dev/null 2>&1
		if [ "$?" -ne 0 ]; then
			rm -f $PIDFILE
			echo "failed! (perhaps it was not running?)"
			exit 201
		fi
	fi
	rm -f $PIDFILE
	echo "OK."
	;;
  restart)
	echo "Restart requested: "
	$THIS stop
	sleep 1
	$THIS start
	;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart}" >&2
	exit 1
	;;
esac

exit 0




More information about the JDev mailing list