[systemd-devel] how-to run instantiated units from templates one after the other

David Herrmann dh.herrmann at gmail.com
Mon Sep 21 10:49:10 PDT 2015


Hi

On Fri, Sep 18, 2015 at 8:34 PM, Dmitry Karpov <d.p.karpov at gmail.com> wrote:
> I have a template for creating the backup:
>
> backup at .service
>
> [Unit]
>
> Description=Instance %i
>
> [Service]
>
> ExecStart=/bin/sh -c "echo do backup job for %i"
>
> [Install]
>
> WantedBy=maintenance.target
>
> and some target:
>
> maintenance.target
>
> [Unit]
>
> Description=target for maintenance
>
> StopWhenUnneeded=yes
>
> As can be seen, instances from backup@ start with maintenance.target. But
> they run in parallel.
>
> There is some way to run them one after the other?
>
> I thought that specifying Conflicts=backup@*.service in the template should
> lead to this, but it is not.

Wildmasks are not supported. Furthermore, your logic would make the
unit conflict with itself, which I doubt is what you want. You should
implement such logic in your own tool instead of pushing it into
unit-files. For instance, if you don't need parallelism, why use
multiple units at all? Just make a single unit iterate over all
devices.

Thanks
David


More information about the systemd-devel mailing list