On Mon, 2007-11-26 at 12:32 +0000, Jörg Sommer wrote: > Hallo C.J., > > C.J. Adams-Collier <[EMAIL PROTECTED]> wrote: > > is there something like a service-common package that provides a helper > > script like the following for services to source? > > > > I'm thinking that it would belong somewhere like > > /usr/share/service-common/init.sh. I have not tested the following yet, and > > I'm a sucky bash programmer. > > Init scripts should not use Bash, they should be Posix Shell scripts!
Sure.. by "bash" I mean "POSIX shell"
> > # Fully qualified paths to required programs
> > START_STOP_DAEMON=/sbin/start-stop-daemon
> > CAT=/bin/cat
> > ECHO=/bin/echo
>
> Why not use echo and cat? Calling echo this way the shell can't use the
> builtin echo command and must spawn a new process.
Is there a test to determine whether there is a builtin for a given
command? If so, we could test for that and use it if it exists.
Otherwise, use the fully qualified version
> > if [ -z "$SERVICE_NAME" ] || \
> > [ -z "$SERVICE_DESC" ] || \
> > [ -z "$SERVICE_DAEMON" ]; then
> > fatal( "Environment not configured correctly.\n\tService requires
> > definition of the following variables:\nSERVICE_NAME\nSERVICE_DESC\n
> > SERVICE_DAEMON" )
> > fi
>
> Why you want to test these values everytime? If the maintainer forgot
> them one time, they are missing everytime.
Maybe they exist one time but get removed before the next run?
> > # We do not want to be affected by PATH tampering. All calls to
> > # external programs will be fully qualified
> > PATH=""
>
> You know what you are doing here? PATH is necessary for the daemon to
> find subcommands.
Yep. I don't want to execute any but the fully qualified commands.
It's a security thing.
> > # echo an error message and quit
> > fatal() {
> > echo " - failed: "
>
> You should get familiar with LSB log function. See lsb-base.
I will. Thanks.
> > # Check whether we were configured to not start the services.
> > check_for_no_start() {
> > if [ "$SERVICE_DISABLED" = "yes" ]; then
>
> This is such a broken behavior. Initscripts are enabled and disabled in
> the configuration of the init system.
>
> IMO there's no need for such a script. Use /etc/init.d/skeleton as a
> template and adapt it to your service.
I agree... but existing scripts use such a beast, so I put it in here.
> Bye, Jörg.
Cheers,
C.J.
signature.asc
Description: This is a digitally signed message part

