Re: Alias for template/instance service unit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@.service
I renamed it to foo@.service (I don't have something which have foo* or bar* as name and previous tail@.service doesn't not exist anymore)

I have this [Install] Section:
WantedBy=getty.target
DefaultInstance=tty12
Alias=bar@.service

systemctl enable foo@tty12.service
> Created symlink /etc/systemd/system/bar@tty12.service => /etc/systemd/system/foo@.service
> Created symlink /etc/systemd/system/getty.target.wants/foo@tty12.service => /etc/systemd/system/foo@service

Systemctl status bar@tty12.service
> Loaded: error (Reason: Unit bar@tty12.service to load properly: File Exists)

Systemctl start bar@tty12.service = KO
> Failed to start bar@tty12.service: Unit bar@tty12.service failed to load properly: File Exists.
> See system logs and systemctl status bar@tty12.service for details

Systemctl start foo@tty12.service = OK

Regards
Hans


Le jeudi 22 avril 2021 à 20:49:52 UTC+2, Mantas Mikulėnas <grawity@xxxxxxxxx> a écrit :


On Thu, Apr 22, 2021 at 9:18 PM Hans Gruber <moocan2112@xxxxxxxx> wrote:
Hello,

I am having problems with the aliases and "Alias=' directive related to the template service unit.


> "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@inst.service") may be a symlink to different template (e.g. "template@inst.service"). In that case, just this specific instance is aliased, while other instances of the template (e.g. "alias@foo.service", "alias@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@.service which will have maybe 8 or 16 instances (eg: core@cpu01.service core@cpu02.service ..) which will apply to all instances when enabled using eg allcores@.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@.service => bar@.service, then you automatically get foo@cpu1.service => bar@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
_______________________________________________
systemd-devel mailing list
systemd-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux