Systemd:立即重新启动实例化服务的所有实例

我使用systemd:Instantiated Services的很好的function。

有一个简单的方法来重新加载一个调用所有实例化的服务?

例如:我不想像这样运行:

systemctl restart autossh@foo systemctl restart autossh@bar systemctl restart autossh@blu 

我试过这个,但是这不起作用

 systemctl restart autossh@* 

相关: 使用一个systemd服务文件启动N个进程

Systemd(从systemd-209开始)支持通配符,但是你的shell可能试图扩展它们。 使用引号将通配符逐字传递给systemctl / service命令:

 systemctl restart 'autossh@*' 

不好,但是这个工作:

 systemctl list-units -t service --full| cut -d' ' -f1| grep mypattern | while read s; do systemctl restart $s; done 

我不知道在systemd的terminal上是否有通配符选项。 你可以做的是在你的systemd脚本中添加一个。

%我会做的伎俩,我认为,但相关的方式你脚本实例化的服务。

您可能会在这里find一个解释为说明符的解释

这表明:

%N

完整的单位名称

%p

对于实例化的单元,它指的是单元名称的“@”字符之前的string。 对于非实例化单元,这指的是删除了types后缀的单元的名称。

%一世

对于实例化单元:这是“@”字符和单元名称.unit名称的后缀之间的string

我不是直接回答你的问题,而是我想你试图达到的目标。 如果您认为您的解决scheme可能是在这个想法之后发现的,请分享您的systemd脚本,以便我们最终可以举例说明,甚至可以为您提供最终脚本。

如果你对编辑自己的脚本感到有信心以这种方式达成解决scheme, 这里有一个例子(我不会引用它,因为我不知道它是否与解决scheme相关,而且对于我的“build议)