[systemd-devel] Service activation

Wols Lists antlists at youngman.org.uk
Sun Feb 13 16:01:20 UTC 2022


On 13/02/2022 15:46, Mantas Mikulėnas wrote:
> On Sun, Feb 13, 2022 at 1:09 PM Wols Lists <antlists at youngman.org.uk 
> <mailto:antlists at youngman.org.uk>> wrote:
> 
>     On 13/02/2022 09:54, Mantas Mikulėnas wrote:
>      > On Sun, Feb 13, 2022 at 2:03 AM Wol <antlists at youngman.org.uk
>     <mailto:antlists at youngman.org.uk>
>      > <mailto:antlists at youngman.org.uk
>     <mailto:antlists at youngman.org.uk>>> wrote:
>      >
>      >     More fun getting things to work ... :-)
>      >
>      >     So I've got a service, scarletdme.service, which fires up my
>     db backend
>      >     for running interactively. However, I also need a socket
>     service for
>      >     remote connections.
>      >
>      >     I've got the xinetd files, but if I'm running systemd, I want
>     to use
>      >     systemd :-)
>      >
>      >     So I've written scarletdme.socket, and scarletdme at .service,
>     but the
>      >     more
>      >     I read, the more I don't understand ...
>      >
>      >     Do I enable scarletdme.socket the same as anything else eg
>     "systemctl
>      >     enable scarletdme.socket"? How does it know the difference
>     between
>      >     scarletdme.service and scarletdme at .service? I get the
>     impression I need
>      >     to put something in the .socket file to make it use
>     scarletdme@ rather
>      >     than scarletdme?
>      >
>      >
>      > If it's a 'nowait' socket (which is "[Socket] Accept=yes" in systemd
>      > terms), then it will use the templated @.service, starting a new
>      > instance for each "accepted" socket (i.e. instance per
>     connection). See
>      > oidentd.socket for comparison.
>      >
>      > Otherwise (by default) it uses the non-templated service and
>     directly
>      > gives it the "listening" socket, letting the service itself
>     handle accept().
>      >
>     ??? Sorry, that's double dutch to me.
> 
>     Are you telling me that just copying the files into /lib/systemd/system
>     will enable them? That seems weird to me because it doesn't do it for
>     normal services afaik. (Or shouldn't I be copying it direct into
>     /lib/systemd/system? I just don't know ...)
> 
> 
> No, I was not talking about any of that. You asked how systemd knows the 
> difference between dme.service and dme at .service.

Let's rewind a moment. That was my SECOND question. That's one of the 
reasons I got confused, because my FIRST question WAS "how do I start 
scarletdme.socket?"

So the answer to that is nice and simple,
"systemctl enable/start scarletdme.socket"

Now what I don't want is for scarletdme.socket to invoke 
scarletdme.service. How do I tell it that it is supposed to invoke 
scarletdme at .service? Or have I messed up naming conventions? Or what the 
hell is the proper way to do it?

Cheers,
Wol



More information about the systemd-devel mailing list