私はsystemctl enable iptables
それがcommandに似ていることを知っていますが、chkconfig --level 5 iptables on
両方がまったく同じではありません。
を使用してsystemctl
特定のターゲット(graphic.targetなど)でのみサービスを開始するように制限する方法は?
答え1
単位ファイルのWantedBy=
ANDRequiredBy=
ディレクティブの用途は次のとおりです。systemd
~からman systemd.unit
:
求める=、必須=
このオプションは、複数回使用することも、スペースで区切られた単位名のリストを提供することもできます。このデバイスがsystemctlアクティベーションを介してインストールされると、リストされている各デバイスの.wants/または.requires/ディレクトリにシンボリックリンクが作成されます。これは、リストされているデバイスのWants =またはRequires =タイプの依存関係を現在のデバイスに追加する効果があります。主な結果は、リストされたデバイスが起動すると現在のデバイスが起動することです。詳細については、[Unit]セクションのWants =とRequires =の説明を参照してください。
したがって、生成されたシンボリックリンクは、systemd
ターゲット/ユニットの起動時に指定されたユニットを開始することです。
たとえば、
[Install]
WantedBy=graphical.target
graphical.target
デバイスが実行時にのみ起動するようにします(デバイスがアクティブな場合)。
他の例:
[Install]
WantedBy=my-custom-target.target graphical.target
my-custom-target.target
または、実行中にデバイスを起動させますgraphical.target
(デバイスがアクティブな場合)。
最後に心に留めておくべきことは、いくつかの目標は他の目標に依存しているため、単一の目標に限定するのは難しいかもしれません。たとえば、起動するgraphical.target
Requires=multi-user.target
と、すべてのデバイスも起動します。一部の目標は他の目標の上に構築され、その上に構築された目標はその目標のすべてを取得します。graphical.target
multi-user.target
答え2
直接同等のものはありませんchkconfig --level 5 iptables on
。古いsysvinitの観点から考え続けるのは無意味で混乱しています。systemdにはランレベルのようなものはありません。
つまり、サービスの[Install]セクションでWantedBy = graphical.targetを使用してGraphical.targetに達した場合にのみ、サービス管理者にiptablesを起動するように要求できます。