Conosco systemctl enable iptables
è simile al comando chkconfig --level 5 iptables on
, ma entrambi non sono esattamente uguali.
Usando systemctl
, come limitiamo l'avvio di un servizio solo su un determinato target come graphical.target.
Risposta accettata:
Questo è ciò che il WantedBy=
e RequiredBy=
direttive in systemd
i file unit sono per:
Da man systemd.unit
:
WantedBy=, RichiestoBy=
Questa opzione può essere utilizzata più di una volta, oppure può essere fornito un elenco di nomi di unità separati da spazi. Viene creato un collegamento simbolico nella directory .want/ o .requires/ di ciascuna delle unità elencate quando questa unità viene installata da systemctl enable. Ciò ha l'effetto di aggiungere una dipendenza di tipo Wants=o Requires=dall'unità elencata all'unità corrente. Il risultato principale è che l'unità corrente verrà avviata all'avvio dell'unità elencata. Vedi la descrizione di Wants=e Requires=nella sezione [Unità] per i dettagli.
Quindi il collegamento simbolico creato è ciò che causa systemd
per avviare l'unità data quando viene avviato il target/unità.
Quindi ad esempio:
[Install]
WantedBy=graphical.target
Farebbe sì che l'unità venga avviata solo quando graphical.target
è in esecuzione (se l'unità è abilitata).
Un altro esempio:
[Install]
WantedBy=my-custom-target.target graphical.target
Farebbe avviare l'unità quando my-custom-target.target
o graphical.target
è in esecuzione (se l'unità è abilitata).
Un'ultima cosa da tenere a mente, può essere difficile limitare le cose a un singolo obiettivo perché alcuni obiettivi dipendono da altri. Ad esempio, graphical.target
Requires=multi-user.target
, quindi quando graphical.target
viene avviato tutte le unità da multi-user.target
vengono anche avviati. Tieni solo a mente che alcuni obiettivi sono costruiti sopra altri e che quelli costruiti sopra otterranno tutto dagli obiettivi da cui dipendono.