我使用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议)