On Mon, Aug 1, 2016 at 2:23 PM, Michael Chapman <[email protected]> wrote: > On Mon, 1 Aug 2016, Andrei Borzenkov wrote: > [...] >>> >>> So here goes what I've done: >>> >>> 1. Create a service and put it in the network-online.target: >>> >>> /etc/systemd/system/change-target.service: >>> [Unit] >>> Description=Change Target >>> Wants=network-online.target >>> After=network-online.target >>> >>> [Service] >>> Type=oneshot >>> ExecStart=/tmp/script.sh >>> TimeoutSec=60s >>> >>> [Install] >>> WantedBy=network-online.target >>> >> >> This unit have conflicting requirements - on one hand it is >> After=network-online.target, OTOH WantedBy=network-online.target >> implies Before=network-online.target. > > > I've seen this asserted on this list a few times, but as far as I can tell > it isn't actually correct. After/Before are meant to be completely > orthogonal to Wants/Requires/etc., according to the documentation. >
Unless DefaultDependencies= is set to no in either of releated units or an explicit ordering dependency is already defined, target units will implicitly complement all configured dependencies of type Wants= or Requires= with dependencies of type After=. man systemd.target > If A.service has: > > Wants=B.service > Before=B.service > > then any time you ask A.service to be started, systemd will add a job to > start B.service... but it still ensures that A.service is started *before* > B.service. > > Is my understanding on this incorrect? I have been making use of this > behaviour for quite some time, and as far as I can tell it has never failed. > > - Michael _______________________________________________ systemd-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/systemd-devel
