You might consider having systemd itself create the listening sockets and then pass them into the service; if you did that, then systemd would already know the port number that was allocated for the socket. On Mon, Jun 14, 2021 at 9:17 PM John Ioannidis <systemd-devel@xxxxxxx> wrote: > > I have an instanced service that gets started and stopped by another service: alice.service runs the equivalent of systemsctl start alice@foo.service, systemctl start alice@bar.service, systemctl stop alice@cat.service, and so on. > Each of the instanced services runs a little http service so its status can be monitored, metrics scraped, etc. The tcp port on which that service runs is just whatever the kernel allocated. I want to export that port number so other processes can find it and use it, for example, by doing the equivalent of systemctl list-units | grep alice@ so they find which instances are actually running, and then going about finding the corresponding ports. > > I can think of a number of ad hoc ways: > > * they can write the port number in a file like /run/alice/foo.port, /run/alice/bar.port, and whoever is interested can go read those files, in the same way that we use .pid files. > * They can use systemd-notify to export it as "Status" > * Using a service discovery mechanism would be an overkill, especially since whatever is actually talking to those ports is on the same host as the services themselves, but that's also a possibility. > > Is there a systemd-native way of accomplishing this? It would be nice if it were possible to have user-defined properties that could be set with systemctl set-property, but that is not the case. > > Thanks > > /ji > _______________________________________________ > systemd-devel mailing list > systemd-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/systemd-devel _______________________________________________ systemd-devel mailing list systemd-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/systemd-devel