Le 16/09/2016 18:32, Steve Litt a écrit :
On Fri, 16 Sep 2016 12:24:45 +0200
Didier Kryn <k...@in2p3.fr> wrote:


      I like more and more this idea of separating the tasks:
       - pid1 (sysvinit or whatever) performs one-shot startups and
basic supervision (like for getty),
sysvinit, right? Spawn your gettys and run the rc files, which run the
supervisor. Is that what you mean?

Rather the following: sysvinit spawns your gettys and your supervisor, and runs the rc files.

       - services needing a sophisticated supervisor use a supervisor
which is only a supervisor, not pid1,
This could be daemontools-encore or runit or s6.

       - services which depend on conditions use specialized tools to
wait for these conditions.
Does OpenRC do the conditional starts?

The architecture I had in mind looks something like this:

.--------.                       .----------------.
|sysvinit|     .------. run as   |runit supvisr or|
|  PID1  |-----|OpenRC|----------|daemontools or  |
`--------'     `------' daemon   |s6 supervisor   |
   |              |               `----------------'
   |-getty1       `-most processes    |-httpd
   |-getty1                           |-sshd
   |-...                              `-Other respawnables

Yes, or the following, where runit etc is respawned automatically by sysvinit.

|  PID1  |  .----------------.
`--------'  |runit supvisr or|   |-httpd
  |---------|daemontools or  |---|-sshd
  |         |s6 supervisor   |   |-other supervised servers
  |         `----------------'
  |-getty6  .-------------------.
  |         | whatever          |
  |---------| launch-and-forget |---|-other services
            | rc                |

   But this makes sense only if the supervisor (runit, s6, etc) has a smarter 
way to keep track of its children than wait(). For example, it could keep some 
named pipe connection to each of them. I haven't explored the ways to do that, 

Dng mailing list

Reply via email to