supervision - discussion about system services, daemon supervision, init, runlevel management, and tools such as s6 and runit
 help / color / mirror / Atom feed
From: KORN Andras <korn-supervise@elan.rulez.org>
To: supervision@list.skarnet.org
Subject: Re: using runit as init
Date: Thu, 10 Jan 2008 00:35:04 +0100	[thread overview]
Message-ID: <20080109233504.GW19934@utopia.intra.guy> (raw)
In-Reply-To: <200801100006.54381.list-supervision@augensalat.de>

On Thu, Jan 10, 2008 at 12:06:54AM +0100, Bernhard Graf wrote:

> I would like to just link init scripts into runsvdir's directory, so 
> they are started automatically. But as we know init scripts terminate 
> and runsv would restart them immediately. I'd like to have a 
> non-respawn mode for runsv.

So have your script remove the symlink to the directory that contains it
from /service before it exits (or in ./finish).

> Having all this it would be simple to convert the links in directories
> /etc/init.d/rc[0123456S].d into correspondig links 
> in /etc/runit/runsvdir/[0123456S] and replace init-daemon-install-tools 
> like chkconfig or insserv by runit-compliant versions.
> So no need to change all daemons with those init.d start-stop scripts. 
> Even those that are installed later would continue to work.

I think this is a misguided attempt to provide "uniformity". Traditional
initscript are quite horrible; I invite you to read, for example, Ubuntu's
apache2 initscript and be appalled at all the unnecessary complexity and
race conditions galore.

One of the chief motivations for switching away from an init-like system,
where services daemonise, to a runit-like system where they are supervised
by their parent process is, or at least should be, the desire to get away
from those race conditions and the fragility of it all. To get away from pid
lotto.

What reason would justify importing that mess into this clean new service
supervision and system startup scheme?

FWIW, services with initscripts you haven't converted to runit services
naturally continue to work. You can just do "/etc/init.d/foo start" even if
your process 1 is runit. Runit can even start these services automatically.
You can even arrange for them to be started and stopped on runlevel changes
(runsvchdir's) with the help of some kludgery (e.g. like the one I suggested
above).

The real solution, however, is of course to convert the messy and complex
initscripts into neat and clean run scripts. You only need to do this once
per daemon, not once per daemon per computer. Chances are someone already
has a run script for your daemon, so you needn't really do anything at all.

Why would you want to keep initscripts around to the extent of creating
one-shot runit services? Maybe there is a different solution.

Andras

-- 
                 Andras Korn <korn at chardonnay.math.bme.hu>
                 <http://chardonnay.math.bme.hu/~korn/>	QOTD:
           If at first you don't succeed, you must be a programmer.


  parent reply	other threads:[~2008-01-09 23:35 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-03 20:51 Bernhard Graf
2008-01-04  0:22 ` Mike Buland
2008-01-05  0:06   ` Bernhard Graf
     [not found]   ` <12EC84FDD73F4BD8A78E7501EB19F1E2@home.internal>
2008-01-05  7:45     ` rehan khan
2008-01-05 23:17       ` Bernhard Graf
2008-01-08  7:11         ` Vincent Danen
2008-01-08 22:28           ` Bernhard Graf
2008-01-09  2:05             ` Vincent Danen
2008-01-09 23:06               ` Bernhard Graf
2008-01-09 23:34                 ` Mike Buland
2008-01-09 23:51                   ` Charlie Brady
2008-01-10  9:22                     ` Bernhard Graf
2008-01-10  9:20                   ` Bernhard Graf
2008-01-10 20:06                     ` Mike Buland
2008-01-11  7:58                       ` Bernhard Graf
2008-01-11 14:30                         ` Mike Buland
2008-01-12 10:18                           ` Bernhard Graf
2008-01-12 17:13                             ` supervising (Re: using runit as init) Charlie Brady
2008-01-12 17:32                               ` supervising mysql (Re: supervising (Re: using runit as init)) Charlie Brady
2008-01-13  4:40                             ` using runit as init Vincent Danen
2008-01-13 15:36                               ` Charlie Brady
2008-01-13 18:28                                 ` Mike Buland
2008-01-13 18:39                                   ` Charlie Brady
2008-01-13 18:49                                     ` Mike Buland
2008-01-14  3:55                                       ` Vincent Danen
2008-01-14 15:11                                         ` Charlie Brady
2008-01-14 15:21                                           ` Vincent Danen
     [not found]                                     ` <6A64B0D384404190ACB76E0A376CD148@home.internal>
2008-01-13 21:06                                       ` rehan khan
2008-01-14  3:53                                 ` Vincent Danen
     [not found]                             ` <CDFFB8AF013F4762AE02CF6A1BDCB27A@home.internal>
2008-01-13 10:35                               ` rehan khan
2008-01-14  3:50                                 ` Vincent Danen
2008-01-13 18:52                             ` Mike Buland
     [not found]                     ` <85040AD9CA634253A8FDB9F7DA6BD200@home.internal>
2008-01-10 22:08                       ` rehan khan
2008-01-11  1:28                         ` Charlie Brady
     [not found]                   ` <C1A5323F485E4A75B75ADB58B664E35E@home.internal>
2008-01-10 21:56                     ` rehan khan
2008-01-09 23:35                 ` KORN Andras [this message]
2008-01-10  8:39                   ` Bernhard Graf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080109233504.GW19934@utopia.intra.guy \
    --to=korn-supervise@elan.rulez.org \
    --cc=supervision@list.skarnet.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).