> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> On Behalf Of Jake Conk
> Sent: Tuesday, 18 September 2007 6:36 PM
> To: misc@openbsd.org
> Subject: Simple startup daemon's on boot question?
>
> Hello,
>
> Simple noob question... I've installed a few packages (ie nrpe2 and
> openvpn) that on other systems like Linux and even BSD based systems
> such as FreeBSD provide means of a rc script which can start and stop
> the service and you can configure this script to be executed on boot.
>
> After installing these packages on OpenBSD I've listed the package
> contents and don't notice any equivalent files that would do this. Are
> we supposed to write our own startup scripts and place them in
> /etc/rc.local to be executed when the system boots? Does OpenBSD not
> use rc scripts that start/stop/restart/ and status applications?

I'm probably going to get burnt for this but :-)

Put this in /etc/rc.conf.local:
---
local_startup_dir=/etc/rc.d
---

Put this in /etc/rc.local
------
. /etc/rc.conf.local
for f in ${local_startup_dir}/*.sh ; do
  if [ -x $f ]; then
    logger -p daemon.notice -t rc.local "Starting $f"
    $f start
    sleep 1
  fi
done
-------

Create the /etc/rc.d directory and plonk start/stop
executable scripts in there (should all end in .sh).

To turn a script off temporarily, make it non-executable
or change .sh to .sh.off or something.

Use numbers (01, 02 etc) in the front of the filename
to determine which scripts run first..

I use a template script like this:
----------
#!/bin/sh
#
# To start the pf-syslog log catcher
#
what=syslog-ng
where=/usr/local/sbin
args=""

KillProc()
{
  proc=$1
  sig=$2

  pid=`ps -xo pid,args | grep -v grep | grep "$proc" | awk '{print $1}'`

  if [ "X$pid" != "X" ]; then
     kill -$sig $pid
     echo $pid

  else
     echo "Nothing to kill"
  fi
}

case "$1" in
"start")
        if [ -f $where/$what ]; then
            echo "Starting $what"
            /$where/$what $args
        fi
    ;;
"stop")
        echo "Stopping $what"
        KillProc $what TERM
        exit 0
    ;;
*)
    echo "$0: Usage $0 start||stop "
    ;;
esac

exit 0
------------

I have found over the years that this approach has a
lot of benefits and few drawbacks.

Introducing fresh admin staff to BSD is a lot easier
if they don't have to do the "grep for PID"
"kill -TERM PID" thing to stop a running "service".
And of course "look in /etc/rc.local",
work out how to start it then start it..

Believe it or not, I've had people reboot servers in
order to stop and start a service <sigh>..

ciao
dave
---
Dave Edwards

Reply via email to