← Back to context

Comment by blibble

7 hours ago

yeah, many options that are complicated beyond the understanding of the distro maintainers, and yet still don't allow expression of common semantics required to support network services reliably

like "at least one real IP address is available" or "time has been synced"

and it's not esoteric, even ListenAddress with sshd doesn't even work reliably

the ONLY piece of systemd I've not had problems with is systemd-boot, and then it turned out they didn't write that

> like "at least one real IP address is available" or "time has been synced"

"network-online.target is a target that actively waits until the network is “up”, where the definition of “up” is defined by the network management software. Usually it indicates a configured, routable IP address of some kind. Its primary purpose is to actively delay activation of services until the network has been set up."

For time sync checks, I assume one of the targets available will effectively mean a time sync has happened. Or you can do something with ExecStartPre. You could run a shell command that checks for the most recent time sync or forces one.

  • it's the "usually" that's the problem

    this service (untouched by me) had:

    After=local-fs.target network-online.target remote-fs.target time-sync.target

    but it was still started without an IP address, and then failed to bind

    just like this sort of problem: https://github.com/systemd/systemd/issues/4880#issuecomment-...

    the entire thing is unreliable and doesn't act like you'd expect

    > Or you can do something with ExecStartPre. You could run a shell command that checks for the most recent time sync or forces one.

    at that point I might as well go back to init=/etc/rc

  • Is it possible for network-online to mean that, or does network-on actually mean that?

    It is possible for a specification to be so abstract that it's useless.

  • Sysadmins really hate the word "usually", and that is at the root of just about every systemd headache I've had