<div dir="ltr"><div dir="ltr">On Sun, Feb 13, 2022 at 1:09 PM Wols Lists <<a href="mailto:antlists@youngman.org.uk">antlists@youngman.org.uk</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 13/02/2022 09:54, Mantas Mikulėnas wrote:<br>
> On Sun, Feb 13, 2022 at 2:03 AM Wol <<a href="mailto:antlists@youngman.org.uk" target="_blank">antlists@youngman.org.uk</a> <br>
> <mailto:<a href="mailto:antlists@youngman.org.uk" target="_blank">antlists@youngman.org.uk</a>>> wrote:<br>
> <br>
>     More fun getting things to work ... :-)<br>
> <br>
>     So I've got a service, scarletdme.service, which fires up my db backend<br>
>     for running interactively. However, I also need a socket service for<br>
>     remote connections.<br>
> <br>
>     I've got the xinetd files, but if I'm running systemd, I want to use<br>
>     systemd :-)<br>
> <br>
>     So I've written scarletdme.socket, and scarletdme@.service, but the<br>
>     more<br>
>     I read, the more I don't understand ...<br>
> <br>
>     Do I enable scarletdme.socket the same as anything else eg "systemctl<br>
>     enable scarletdme.socket"? How does it know the difference between<br>
>     scarletdme.service and scarletdme@.service? I get the impression I need<br>
>     to put something in the .socket file to make it use scarletdme@ rather<br>
>     than scarletdme?<br>
> <br>
> <br>
> If it's a 'nowait' socket (which is "[Socket] Accept=yes" in systemd <br>
> terms), then it will use the templated @.service, starting a new <br>
> instance for each "accepted" socket (i.e. instance per connection). See <br>
> oidentd.socket for comparison.<br>
> <br>
> Otherwise (by default) it uses the non-templated service and directly <br>
> gives it the "listening" socket, letting the service itself handle accept().<br>
> <br>
??? Sorry, that's double dutch to me.<br>
<br>
Are you telling me that just copying the files into /lib/systemd/system <br>
will enable them? That seems weird to me because it doesn't do it for <br>
normal services afaik. (Or shouldn't I be copying it direct into <br>
/lib/systemd/system? I just don't know ...)<br></blockquote><div><br></div><div>No, I was not talking about any of that. You asked how systemd knows the difference between dme.service and dme@.service.</div><div><br></div><div>Sockets (and other units) are "started" and/or "enabled" the same way services are. If you want a service to launch its process right now, you `systemctl start` it. Likewise, if you want a .socket to <i>start listening</i> right now, you `systemctl start` it, and if you want a .timer to start scheduling right now, you `systemctl start` it.</div><div><br></div><div>You use `systemctl enable` if you want a unit to be automatically started <i>at boot time </i>– or whatever else its [Install] section says. The "enable" command sets up dependency symlinks from the [Install] section, where you have "WantedBy=sockets.target" or similar. (If there's no [Install] section yet, then `systemctl enable` will do nothing.)</div><div><br></div><div>Now whether dme.socket uses dme.service vs dme@.service has absolutely no relationship to any of the above.</div></div><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">Mantas Mikulėnas</div></div></div>