Utilizo la característica agradable de systemd: Servicios instanciados.
¿Hay una manera simple de recargar todos los servicios instanciados con una sola llamada?
Ejemplo: no quiero ejecutar todo de esta manera:
systemctl restart autossh@foo
systemctl restart autossh@bar
systemctl restart autossh@blu
Intenté esto, pero esto no funciona.
systemctl restart autossh@*
Relacionado: Iniciar N procesos con un archivo de servicio systemd
Actualizar
Primero, me fascinaron los servicios instanciados, pero luego me di cuenta de que ejecutar una herramienta de administración de configuración como Ansible tiene más sentido. Aprendí: Mantenga las herramientas simples. Muchas herramientas comienzan a implementar comprobaciones de condición (si ... más ...) y bucles. Por ejemplo, servidores web o configuración del servidor de correo. Pero esto debería resolverse en un nivel diferente (superior): la gestión de la configuración. Ver: https://github.com/guettli/programming-guidelines#dont-use-systemd-instantiated-units
systemctl status 'autossh@*'
salida:autossh@\x2a.service - ... Active: inactive (dead)
Versión:systemd 195
systemctl restart autossh@{1..2}
(con cualquier N en lugar de2
) que es un poco menos general, pero también iniciará los procesos si lo soninactive (dead)
.No es agradable, pero esto funciona para sistemas con un viejo systemd:
Por supuesto, la solución de la respuesta anterior (
systemctl restart 'autossh@*'
) es mejor.fuente
cut
puede analizar el campo incorrecto en caso de que haya servicios fallidos en la salida de unidades de lista.@weirdan La respuesta es correcta, pero falta algo para ciertas distribuciones.
Para Centos 7 y similares , puede hacer:
PERO, (inicio) funcionará SOLO, si especifica la marca "--todos":
De lo contrario, no encontrará los servicios, ya que no existen. Esta es la característica prevista del sistema.
Para los sistemas basados en Ubuntu , funciona más o menos de la misma manera, pero la diferencia es que el indicador "--todos" debe especificarse para todos los argumentos de systemctl, de lo contrario no hará nada.
fuente
No sé si hay una opción para un comodín en la terminal para systemd. Lo que puede hacer es agregar uno en sus scripts systemd.
El% que haría el truco, creo, pero está relacionado con la forma en que ha programado los servicios instanciados.
Puede encontrar una explicación aquí referida como especificadores
que muestra que:
No estoy respondiendo directamente a tu pregunta, sino por lo que supongo que estás tratando de lograr. Si cree que su solución se puede encontrar siguiendo esta idea, comparta su secuencia de comandos systemd, para que eventualmente podamos ilustrar con ejemplos y tal vez incluso proporcionarle la secuencia de comandos final.
Si se siente seguro al editar su propio script para llegar a una solución de esa manera, aquí tiene un ejemplo (no lo citaré porque no sé si es relevante para la solución y es demasiado específico para lo que yo '' m proponiendo)
fuente