Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Nov 1998 23:57:09 +0000
From:      Nik Clayton <nik@nothing-going-on.demon.co.uk>
To:        current@FreeBSD.ORG
Subject:   /etc/rc.d, and changes to /etc/rc?
Message-ID:  <19981117235709.20735@nothing-going-on.org>

next in thread | raw e-mail | index | archive | help
Folks,

[ Originally posted to -hackers. Forwarded to -current at Robert Nordier's
  request, apparently fewer developers than I thought read -hackers.

  Reply-to *not* set, I can read replies in either -hackers or -current,
  and this is probably -current material as much as it is -hackers ]

During the day job, I use Solaris. This is not, in and of itself, a bad
thing.

Solaris uses run levels. I don't particularly like them, but I tolerate
them. I *don't* want to bring run levels (or even, if Terry's reading,
run states) to FreeBSD.

The one useful feature I've found with run [levels|states] as implemented
on Solaris is the /etc/init.d directory. For those that don't know, this
contains 'n' scripts, one per 'service', that take 'start' and 'stop'
parameters. If you want to stop Sendmail, it's 

    sh /etc/init.d/sendmail stop

No need to poke around with ps, grep, and friends to determine the PID to
kill, no wondering about whether or not there's a lock file you might 
need to clean up afterwards, and so on. It helps save a little time, and
is probably easier for newcomers to understand as well.

We already have the beginning of a system like this for ported software,
with the ${PREFIX}/etc/rc.d directory.

What are people's thoughts on doing the same thing to the base system?

In essence, this would involve (on a case by case basis) going through 
the daemons started in /etc/rc*, building a script to start/stop the
daemon, and changing the code in /etc/rc* to call these scripts instead.

NOTE: The order in which scripts would be called by /etc/rc* would not
be determined by the script name, there would be none of this silliness
with S20foo and K50bar, ordering is still determined by /etc/rc*

All I want to do is abstract out the daemon start/stop process a little
more.

Down the road, this could bring other benefits as well;

  - For those that like run levels/states, it becomes easier for them to
    create a port with a new version of init that implemented them.
    People that want run levels install the port, people that don't, don't.

  - It makes it easier to install replacements for programs that are in
    the base system. If sendmail was started from /etc/rc.d/smtp.sh,
    the first thing smtp.sh could check for is the existence of 
    /usr/local/etc/rc.d/smtp.sh, and call that instead if it existed.
    Replacing sendmail with qmail or vmailer then becomes a little easier.

  - Simplifies documentation. When explaining how to stop a system process,
    you don't need to explain ps, grep, kill, awk/cut, backticks, and
    pipelines. You just say "Do it like this", and explain the magic 
    behind it at a later point.

I realise this is a religious issue, and one of those things people like
to get all excited about. However, I've just seen a message from Jordan
suggesting the ordering be changed in host.conf, and *no one* objected.
I figured I'd jump in quickly, before they stop putting Prozac in the 
water.

N
-- 
	    C.R.F. Consulting -- we're run to make me richer. . .

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19981117235709.20735>