[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Init Script for Arbitrary Number of Daemons



This one time, at band camp, ms419@freezone.co.uk said:
> My problem is really starting an arbitrary number...
> 
> Perhaps I am guilty of some abuse of language; sorry. There is only one 
> daemon, which I am trying to start an arbitrary number of copies of, 
> with an arbitrary number of - possibly - different options. I'd like to 
> be able to do something like:
> 
> ---
> for DAEMON_OPTS in $DAEMON_OPTS_LIST; do
> 	echo -n " $NAME"
> 	start-stop-daemon --start --quiet --pidfile /var/run/$NAME.$i.pid \
> 		--exec $DAEMON -- $DAEMON_OPTS
> done
> ---

You want an array of arrays.

The simplest (although there are many other ways to d this, not all are
as easily self documenting or simple to use) is something like:

/etc/default/package:
# Configure here your options for each running daemon:
DAEMON_1_OPTS="..."
DAEMON_2_OPTS="..."
DAEMON_3_OPTS="..."

#(don't use 'export foo=bar here', just regular variable assignments)

/etc/init.d/package:

if [ -f /etc/default/package ] 
  . /etc/default/package
fi

# This cuts any line that is only whitespace, or first non-whitespace
# character is a comment (#), and parses the rest.

DAEMON_OPTS_LIST=`egrep -v '^[[:space:]]*(#|$)' /etc/default/package \
  | awk -F '=' '{print $1}'`

for DAEMON_OPTS in "$DAEMON_OPTS_LIST"; do 
  start-stop-daemon --start --quiet --pidfile /var/run/$NAME.$i.pid \
    --exec $DAEMON -- $DAEMON_OPTS
done

or something.  That would be user configurable and relatively
discoverable.  There are many other bash constructs that do this more
efficiently, but you should try to keep the /etc/default file as
straightforward as possible.  I am still not sure I am addressing your
question fully, but I think so.  I think you want:

single daemon, possibility of running multiple instances
said daemon does not by itself run multiple instances by default 
  (unlike, e.g, apache)
said daemon should have different options on different instances

I think my proposal allows that to happen, and in a user configurable
way.  If that is still not quite what you're looking for, write back -
I'm sure we can dig something else up.
-- 
 -----------------------------------------------------------------
|   ,''`.					     Stephen Gran |
|  : :' :					 sgran@debian.org |
|  `. `'			Debian user, admin, and developer |
|    `-					    http://www.debian.org |
 -----------------------------------------------------------------

Attachment: pgp8xTYNrg0nu.pgp
Description: PGP signature


Reply to: