[systemd-devel] Alias for template/instance service unit

Hans Gruber moocan2112 at yahoo.fr
Thu Apr 22 21:20:28 UTC 2021


 Hello,
Thank you for your really appreciated advice. 
I confirm that I misunderstood what "applies to all instances" means.So now seems clear. Thanks
But there is something I don't understand.

I have two templates.The second one which is a simple instance of a tail > /dev/ttyX under tail at .serviceI renamed it to foo at .service (I don't have something which have foo* or bar* as name and previous tail at .service doesn't not exist anymore)

I have this [Install] Section:WantedBy=getty.targetDefaultInstance=tty12Alias=bar at .service
systemctl enable foo at tty12.service> Created symlink /etc/systemd/system/bar at tty12.service => /etc/systemd/system/foo at .service> Created symlink /etc/systemd/system/getty.target.wants/foo at tty12.service => /etc/systemd/system/foo at service
Systemctl status bar at tty12.service> Loaded: error (Reason: Unit bar at tty12.service to load properly: File Exists)
Systemctl start bar at tty12.service = KO> Failed to start bar at tty12.service: Unit bar at tty12.service failed to load properly: File Exists.> See system logs and systemctl status bar at tty12.service for details
Systemctl start foo at tty12.service = OK
RegardsHans


    Le jeudi 22 avril 2021 à 20:49:52 UTC+2, Mantas Mikulėnas <grawity at gmail.com> a écrit :  
 
 On Thu, Apr 22, 2021 at 9:18 PM Hans Gruber <moocan2112 at yahoo.fr> wrote:

Hello,
I am having problems with the aliases and "Alias=' directive related to the template service unit.
According to https://www.freedesktop.org/software/systemd/man/systemd.unit.html

> "A template instance may only be aliased by another template instance, and the instance part must be identical. A template may be aliased by another template (in which case the alias applies to all instances of the template). As a special case, a template instance (e.g. "alias at inst.service") may be a symlink to different template (e.g. "template at inst.service"). In that case, just this specific instance is aliased, while other instances of the template (e.g. "alias at foo.service", "alias at bar.service") are not aliased. Those rule preserve the requirement that the instance (if any) is always uniquely defined for a given unit and all its aliases."
I have exactly these two cases and requirements and cannot find example.
>  "A template may be aliased by another template (in which case the alias applies to all instances of the template)"

eg: How to create an alias using `Alias=` for a service template core at .service which will have maybe 8 or 16 instances (eg: core at cpu01.service core at cpu02.service ..) which will apply to all instances when enabled using eg allcores at .service.


I think you're misunderstanding what "applies to all instances" means. It does not give you a super-unit that controls all instances in unison -- rather, it gives you a template alias that will provide an alias for *each instance individually*.
But one instance is still aliased to one instance. For example, if you alias foo at .service => bar at .service, then you automatically get foo at cpu1.service => bar at cpu1.service, and so on. That's what template aliases do.
If you want to control multiple instances at once, you might be looking for two other features:1. Custom target units, which allow you to *start* all instances at once;
2. Wildcard support in `systemctl` commands, which allows you to see the status of all loaded instances at once (systemctl status "foo@*.service").
-- 
Mantas Mikulėnas  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20210422/177169ca/attachment.htm>


More information about the systemd-devel mailing list