В Thu, 14 May 2015 21:23:38 +0200 Evert <evert.gen...@planet.nl> пишет:
> Hi, > > According to the systemd documentation, Requisite disallows starting a > unit unless the specified unit has been started. This seems to work > fine, however, if the specified unit has been restarted, this unit will > be started too! > This is not what should happen and it doesn't happen with a stop and > start of the specified unit, so clearly, restart behaves different than > stop followed by start. > > This can easily be reproduced using 2 dummy service units: > > > # dummy-1.service: > [Unit] > Description=dummy one > DefaultDependencies=false > After=local-fs.target > Before=basic.target > > [Service] > Type=oneshot > RemainAfterExit=yes > ExecStart=/bin/true > ExecReload=/bin/true > ExecStop=/bin/true > > [Install] > WantedBy=sysinit.target multi-user.target > Also=dummy-2.service > > > # dummy-2.service > [Unit] > Description=dummy TWO > DefaultDependencies=no > After=dummy-1.service > Before=shutdown.target > Requisite=dummy-1.service > > [Service] > Type=oneshot > RemainAfterExit=no > ExecStart=/bin/true > > [Install] > WantedBy=shutdown.target > > > # systemctl daemon-reload > # systemctl enable dummy-1 > Created symlink from > /etc/systemd/system/sysinit.target.wants/dummy-1.service to > /etc/systemd/system/dummy-1.service. > Created symlink from > /etc/systemd/system/multi-user.target.wants/dummy-1.service to > /etc/systemd/system/dummy-1.service. > Created symlink from > /etc/systemd/system/shutdown.target.wants/dummy-2.service to > /etc/systemd/system/dummy-2.service. > > In another window I follow the journal which output I pasted after the > commands I execute: > # journalctl -f |grep dummy > > # systemctl start dummy-1 > mei 14 19:58:20 joker systemd[1]: Started dummy one. > > # systemctl stop dummy-1 > mei 14 19:58:25 joker systemd[1]: Stopping dummy one... > mei 14 19:58:25 joker systemd[1]: Stopped dummy one. > > # systemctl start dummy-1 > mei 14 19:58:30 joker systemd[1]: Starting dummy one... > mei 14 19:58:30 joker systemd[1]: Started dummy one. > > # systemctl restart dummy-1 > mei 14 19:58:34 joker systemd[1]: Stopping dummy one... > mei 14 19:58:34 joker systemd[1]: Starting dummy one... > mei 14 19:58:34 joker systemd[1]: Started dummy one. > mei 14 19:58:34 joker systemd[1]: Starting dummy TWO... > mei 14 19:58:34 joker systemd[1]: Started dummy TWO. > > # systemctl stop dummy-1 > mei 14 19:58:39 joker systemd[1]: Stopping dummy one... > mei 14 19:58:39 joker systemd[1]: Stopped dummy one. > > # systemctl restart dummy-1 > mei 14 19:58:43 joker systemd[1]: Starting dummy one... > mei 14 19:58:43 joker systemd[1]: Started dummy one. > mei 14 19:58:43 joker systemd[1]: Starting dummy TWO... > mei 14 19:58:43 joker systemd[1]: Started dummy TWO. > > As you can see, dummy-2 is not triggered by start or stop of dummy-1. > However, it *is* triggered by restart of dummy-1 (no matter if dummy-1 > has been started or not). Am I missing something here or did I find a bug? > > IMHO restart should be no different than "stop ; start" and it should > certainly not trigger a unit which has a Requisite on that unit. I do not see it on openSUSE 13.2 with (heavily patched) systemd-210 so it appears to be a regression, unless there is some distro-specific patch. Reverse dependency for Requisite is Required-By and I have feeling it had already been discussed. _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel