Может ли кто-нибудь здесь запустить / остановить / перезагрузить / ... список единиц, указанных с помощью подстановочного знака или аналогичного метода в 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 (это единственный, который я тестировал).