Antw: [EXT] [systemd‑devel] Is it possible to let systemd create a listening socket and yet be able to have that socket activate nothing, at least temporarily?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Wouldn't the most logical solution be?: Integrate that backup facility in your
daemon (like before terminating).

>>> Klaus Ebbe Grue <grue@xxxxxxxx> schrieb am 07.10.2022 um 09:24 in
Nachricht
<91a90e97f41a4da3b7f716727262de84@xxxxxxxx>:
> Hi systemd‑devel,
> 
> I have a user question which I take the liberty to send here since "about 
> systemd‑devel" says "... it's also OK to direct user questions to this
mailing 
> list ...".
> 
> I have a daemon, /usr/bin/mydaemon, which listens on one and only one TCP 
> port, say 9999, and which does no more than communicating over 9999 and 
> creating, reading, writing and deleting files in /home/me/mydaemon/.
> 
> Mydaemon leaves it to systemd to create a socket which listens at 9999.
> 
> It is unimportant whether or not mydaemon is started at boot and it is also

> unimportant whether or not mydaemon is socket activated. As long as it is at

> least one of the two.
> 
> Now I want to upgrade mydaemon to a new version using a script, without race

> conditions and without closing the listening socket. I want the listening 
> socket to stay open since otherwise there can be a one minute interval
during 
> which it is impossible to reopen 9999.
> 
> If it is just a clean upgrade, the script could replace /usr/bin/mydaemon, 
> then stop mydaemon. If the daemon is socket activated there is no more to
do. 
> If the daemon is activated only on boot then the script must end up 
> restarting mydaemon.
> 
> But now I want to do some more while mydaemon is not running. It could be 
> that my script should take a backup of /home/me/mydaemon/ in case things go

> wrong. It could be the script should translate some file in 
> /home/me/mydaemon/ to some new format required by the new mydaemon or 
> whatever.
> 
> So I need to stop mydaemon in such a way that mydaemon cannot wake up while

> my script fiddles with /home/me/mydaemon/.
> 
> According to https://0pointer.de/blog/projects/three‑levels‑of‑off it seems

> that that was possible in 2011: just do "systemctl disable
mydaemon.service". 
> But when I try that, mydaemon still wakes up if I connect to 9999 using eg 
> netcat.
> 
> I have also tried to mask mydaemon. But if I then connect to 9999 using 
> netcat, then netcat gets kicked of. And if I try again then 9999 is no
longer 
> listening.
> 
> QUESTION: Is it possible to let systemd create a listening socket and yet be

> able to have that socket activate nothing, at least temporarily?
> 
> Cheers,
> Klaus






[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux