¿Es posible reiniciar muchos servicios systemd con un solo objetivo?

¿Es posible reiniciar muchos servicios systemd con un solo objetivo?

Tengo muchos archivos de unidades de servicio que debo reiniciar y no quiero tener que escribirlos todos. ¿Es posible tener un único objetivo o servicio que no sepa nada sobre cómo iniciar los otros servicios, pero los agrupe para que todos se reinicien con un solo comando?

¿Cómo escribo mi archivo de unidad de servicio systemd o mi archivo de destino si así lo deseo systemctl restart one-to-rule-them-all?

Requisitos: 1. El objetivo súper quiere que se inicien muchos otros servicios. 2. El súper objetivo no debería saber nada sobre cómo iniciar esos servicios.

Cuando probé esto sudo systemctl restart one-to-rule.targetno pasa nada.

# /etc/systemd/system/one-to-rule.target
[Unit]
Description=One To Rule Them All
Requires=multi-user.target
Wants=program-api.service  program-gui.service yet-another.service
After=multi-user.target display-manager.service

[Install]
WantedBy=graphical.target

Cada una de estas unidades program-api.service program-gui.service yet-another.serviceestaba one-to-rule.targethabilitada y todas parecen estar cargadas y activas. Puedo iniciar la máquina y todos los servicios aparecen exactamente como los quiero. Sin embargo, solo quiero escribir systemctl restart one-to-rule.targeto algo así, en lugar de reiniciar.

Los gráficos de dependencia se ven así

$ systemctl list-dependencies one-to-rule.target
one-to-rule.target
● ├─program-api.service
● ├─program-gui.service
● ├─yet-another.service
● └─multi-user.target

$ systemctl list-dependencies --reverse one-to-rule.target
one-to-rule.target
● └─graphical.target

Respuesta1

Esto puede funcionar, pero cada una de esas unidades .service debe tenerlo PartOf=one-to-rule.targetpara que se les propaguen reinicios. (En realidad, esta es solo una versión más débil de Requires=<…>.target.)

Lamentablemente, no es posible especificar la dependencia opuesta (ConsistsOf) directamente en el destino; es necesario ampliar todos los archivos de servicio.

información relacionada