这里有人能够启动/停止/重新加载/...在 systemctl 上使用通配符或类似方法指定的单元列表吗?
我尝试做类似的事情:systemctl restart openstack-nova-*.services
或systemctl restart openstack-nova-?.services
但这是一条死胡同,我在 systemctl 的手册中没有发现任何有用的东西。
我可以使用 for 循环,但在此之前我必须systemctl -t service --failed
为列出的单位创建一个然后 grep ......有点无聊不是吗?
所以,如果有人知道是否有可能做这样的事情,我会很高兴听到它。
如果不是,我想我会将这个想法推送到 systemctl 开发人员列表中,或者如果我有时间的话,可能会做补丁^^
更新Systemd 支持来自 systemd-209 的通配符转发https://serverfault.com/a/797926/291826
两年后 systemctl 仍然不允许使用通配符,尽管它们非常有用。
但是,我确实记下了您的笔记,
systemctl -t service --failed
并且将其破解了。我决定在这里发布它,因为它可以帮助下一个找到这个问题的人。systemctl restart $(systemctl -t service --failed | grep openstack-nova-*.service | cut -d ' ' -f 1)
这需要
systemctl -t service --failed
, greps 匹配“openstack-nova-*.service”的服务,然后通过cut
在空间 ( ) 上剪切 (-d ' '
) 并获取第一个结果 (-f 1
) 来删除这些文件的描述符。然后它重新启动整个系统,因为幸运的是 systemctl 命令允许将多个服务传递给它以停止。太棒了,对于希望同时管理多个 systemd 单元的人来说是值得注意的。自 2016 年(2017 年?)以来,Systemd 现在接受通配符 \o/
示例:
systemctl restart openstack-nova-*
现在正在全面工作PS:至少它适用于 CentOS 7.x 版本(这是我测试过的唯一版本)。