On Fri, 9 Dec 2016, André Hartmann wrote:
Hi Michael,

Am 09.12.2016 um 12:43 schrieb Michael Chapman:
 On Fri, 9 Dec 2016, Michael Chapman wrote:
 [...]
>  You will need to use the .service extension on at least the first of
>  those links. systemd will only consider links in that directory that
>  have valid unit names. (I'm pretty sure the intermediate link's name
>  doesn't matter, but I wouldn't want to rely on that -- best just to
>  use valid full unit names everywhere.)

 Oh, something else I thought of... I'm pretty sure it doesn't make sense
 having a symlink to /dev/null inside a .wants directory. Really, only
 the name of those links are considered. The links aren't actually
 dereferenced.

I have to disagree on this, the name does not matter, the link target does matter (see log below, the relevant status is marked with <---).

Your log only shows that it's the presence of the link that matters, not what the link is pointing to.

Here, I'll demonstrate:

  # cat >/etc/systemd/system/example.service <<EOF
  [Unit]
  Description=Example

  [Service]
  ExecStart=/bin/true

  [Install]
  WantedBy=multi-user.target
  EOF

Enabling this creates the symlink:

  # systemctl daemon-reload
  # systemctl is-enabled example.service
  disabled
  # systemctl enable example.service
  Created symlink from 
/etc/systemd/system/multi-user.target.wants/example.service to 
/etc/systemd/system/example.service.
  # systemctl is-enabled example.service
  enabled

But I can make the symlink's target whatever I want... even a dangling symlink:

  # ln -sf the-target-does-not-matter 
/etc/systemd/system/multi-user.target.wants/example.service
  # systemctl daemon-reload
  # systemctl is-enabled example.service
  enabled

/dev/null is just fine, it's still a valid link:

  # ln -sf /dev/null /etc/systemd/system/multi-user.target.wants/example.service
  # systemctl daemon-reload
  # systemctl is-enabled example.service
  enabled

Only the name of the link is significant:

  # mv 
/etc/systemd/system/multi-user.target.wants/{example,somethingelse}.service
  # systemctl daemon-reload
  # systemctl is-enabled example.service
  disabled

Put simply, you can't enable and disable services the way you're trying to do so.

- Michael
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to