systemd: Is it wrong?

Lennart Poettering mzerqung at 0pointer.de
Mon Jul 11 01:20:56 UTC 2011


On Sun, 10.07.11 23:31, JB (jb.1234abcd at gmail.com) wrote:

> 
> Lennart Poettering <mzerqung <at> 0pointer.de> writes:
> 
> > ... 
> > > So one service can not have multiple daemons?
> > 
> > As mentioned earlier, it can, but we strongly advise you not to do this,
> > since it makes it hard to supervise and monitor a service, to restart it
> > when it crashes, to collect exit statusses, to run other services on
> > failure, to match up log messages, to even inform the user about most
> > basic service status. We support this for compat with SysV, not as a
> > feature you should actually use.
> > ...
> 
> That's strange. Perhaps I misunderstand you ...
> 
> Linux.FR has an interview with Lennart Poettering ...
> http://linuxfr.org/nodes/86687/comments/1249943
> 
> "LinuxFr.org : Could explain a little bit your sentence: "Systemd is the first
> Linux init system which allows you to properly kill a service" ?
> 
> Lennart : A service like Apache might have a number of subprocesses running,
> like CGI scripts, which might have been written by 3rd parties and hence are
> very lightly controlled only. This gives them the power to detach themselves
> almost completely from the main Apache service, and this actually happens in
> real life.
> In systemd this is not possible anymore, and processes can no longer escape the
> supervision. That enables us -- for the first time -- to fully kill a service
> and all its helper processes, in a way that we can be sure no CGI script can
> escape us.
> For details see this blog story I posted a while back.
> It's kinda ironic that the job of killing a service which appears to simple at
> first is actually quite hard to get right, and only now we could fix this
> properly. One might have hoped this issue would have been fixed much earlier on
> Linux."
>  
> Then I would assume that systemd could do it, i.e. control multiple services
> of any type (daemons, master/slave, or multithreaded) easily in its own
> environment it creates and controlls fully ...

As service/daemon consists of one or more process, with one designated
as main, and practically defining the runtime of the service. It's the
one traditionally storing its PID in the PID file.

In a systemd world we only want one PID file writing daemon per
systemd service. That daemon can spawn as many helper processes as it
wants of course, for example to implement CGI or to do worker processes
like udev, or anything like that.

Lennart

-- 
Lennart Poettering - Red Hat, Inc.


More information about the devel mailing list