On Tue, 23.07.13 08:05, Steffen Sledz (sl...@dresearch-fe.de) wrote: > We like to implement the following behaviour using systemd. > > We have some exclusive so called operating modes. Each modes has a few > associated services which should run in this mode.
Yeah, this should work. You should be able to define target units and then use "isolate" to switch between them. Or you define the targets and add Conflicts= to all the other units you want to kick out, which allows you to use "start" on the target, instead of "isolate". > Our idea is to define some conflicting targets representing the > operation modes. > > But we found no way to guarantee that *all* services of the formerly > active operation mode (except the ones which should run in the new > mode too) are *completely terminated* before the services of the new > mode *begin to start*. This is not available as global switch. You'd have to order the units individually against each other, with After= or Before=. Note that After= and Before= would actually have the *same* effect here, as the general rule how they are executed is like this: With two units, A and B where B has After=A set: 1) If the two units are started up, then B is started after A. 2) If the two units are shut down, then A is stopped after B. (The rule is: the shutdown order is the inverse of the startup order). 3) If A is stopped, and B is started, then A is stopped first, and then B is started. 4) If B is stopped, and A is started, then A is also stopped first, and then B is started. (The rule is: when two units are ordered against each other, and one is started the other stopped, then the stop is *always* executed before the start, regardless in which way they are ordered). But yeah, I can see that you are look for a simple global option here, but this doesn't exist, and I am not sure how we could implement that. Lennart -- Lennart Poettering, Red Hat _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel