Je sais que systemctl enable iptables
est similaire à la commande chkconfig --level 5 iptables on
, mais les deux ne sont pas exactement identiques.
Utilisation de systemctl
, comment restreindre le démarrage d'un service uniquement sur une cible donnée, telle que graphic.target.
Réponse acceptée :
C'est ce que le WantedBy=
et RequiredBy=
directives dans systemd
les fichiers d'unité sont pour :
Depuis man systemd.unit
:
WantedBy=, RequiredBy=
Cette option peut être utilisée plus d'une fois, ou une liste de noms d'unité séparés par des espaces peut être fournie. Un lien symbolique est créé dans le répertoire .wants/ ou .requires/ de chacune des unités répertoriées lorsque cette unité est installée par systemctl enable. Cela a pour effet qu'une dépendance de type Wants=ou Requires=est ajoutée de l'unité répertoriée à l'unité actuelle. Le résultat principal est que l'unité actuelle sera démarrée lorsque l'unité répertoriée sera démarrée. Voir la description de Wants=et Requires=dans la section [Unité] pour plus de détails.
Ainsi, le lien symbolique créé est ce qui cause systemd
pour démarrer l'unité donnée lorsque la cible/l'unité est démarrée.
Ainsi, par exemple :
[Install]
WantedBy=graphical.target
Cela entraînerait le démarrage de l'unité uniquement lorsque graphical.target
est exécuté (si l'unité est activée).
Autre exemple :
[Install]
WantedBy=my-custom-target.target graphical.target
Entraînerait le démarrage de l'unité lorsque my-custom-target.target
ou graphical.target
est exécuté (si l'unité est activée).
Une dernière chose à garder à l'esprit, il peut être difficile de restreindre les choses à une seule cible car certaines cibles dépendent d'autres. Par exemple, graphical.target
Requires=multi-user.target
, donc quand graphical.target
est démarré toutes les unités de multi-user.target
sont également lancés. Gardez simplement à l'esprit que certaines cibles sont construites au-dessus d'autres, et que celles qui sont construites au-dessus obtiendront tout des cibles dont elles dépendent.