Vím, že systemctl enable iptables
je podobný příkazu chkconfig --level 5 iptables on
, ale oba nejsou úplně stejné.
Pomocí systemctl
, jak omezíme spuštění služby pouze na daném cíli, jako je graphical.target.
Přijatá odpověď:
To je to, co WantedBy=
a RequiredBy=
direktivy v systemd
soubory jednotek jsou pro:
Z man systemd.unit
:
WantedBy=, RequiredBy=
Tato možnost může být použita více než jednou nebo může být uveden seznam názvů jednotek oddělený mezerami. Symbolický odkaz se vytvoří v adresáři .wants/ nebo .requires/ každé z uvedených jednotek, když je tato jednotka nainstalována pomocí systemctl enable. To má za následek, že závislost typu Wants=nebo Requires=je přidána z uvedené jednotky k aktuální jednotce. Primárním výsledkem je, že aktuální jednotka bude spuštěna při spuštění uvedené jednotky. Podrobnosti viz popis Wants=a Requires=v sekci [Jednotka].
Takže vytvořený symbolický odkaz je příčinou systemd
ke spuštění dané jednotky při spuštění cíle/jednotky.
Takže například:
[Install]
WantedBy=graphical.target
Způsobilo by to spuštění jednotky pouze při graphical.target
je spuštěn (pokud je jednotka povolena).
Další příklad:
[Install]
WantedBy=my-custom-target.target graphical.target
Způsobilo by to spuštění jednotky při my-custom-target.target
nebo graphical.target
je spuštěn (pokud je jednotka povolena).
Poslední věc, kterou je třeba mít na paměti, může být obtížné omezit věci na jeden cíl, protože některé cíle závisí na jiných. Například graphical.target
Requires=multi-user.target
, takže když graphical.target
spouští všechny jednotky z multi-user.target
jsou také spuštěny. Jen mějte na paměti, že některé cíle jsou postaveny na jiných a že ty postavené na vrcholu získají vše z cílů, na kterých závisí.