自由気ままに書いちゃおう

好きなことをつらつらと・・・

【RHEL8】Unitファイル構成について

今回はUnitファイルの構成(中身)についてです。

■Unitファイルの格納先について

Unitファイルは以下の2か所に格納されています。
① /usr/lib/systemd/system/
② /etc/systemd/system/

■格納先の使い分けについて

上記の通り2か所に格納されているUnitファイルですが、
結論から言うと、
②に格納されているUnitファイルが優先的に使用されます。

つまり、
①と②に同じUnitファイル(名)が格納されていた場合は、②の方が使用されます。

■① /usr/lib/systemd/system/

OSのデフォルトとなるUnitファイルが格納されています。

f:id:guri2o1667:20201019100113p:plain


「サービスユニットを編集したい」等、デフォルトから変更を加える場合は
/usr/lib/systemd/system/内のファイルを/etc/systemd/systemにコピーして、
コピーしたほうのファイルに変更を加えます。
※ /usr/lib/systemd/system/内のファイルを修正するのは非推奨です。

■② /etc/systemd/system/

前述の通り、ユニットファイルを編集する際、
修正対象をコピーするディレクトリです。
また、default.targetに指定したターゲットに対するシンボリックリンクが格納されております。

f:id:guri2o1667:20201019100502p:plain

以降、本題です。

■Unitファイルの内容について

ここでは主にサービスユニットについて記載していきます。
サービスユニットの記載内容がわかると、他のユニットについても同じ概念で解釈することが可能になります。

尚、NetworkManager.serviceを例に挙げます。
※一部見切れていますが、説明の上で問題ありません。

f:id:guri2o1667:20201019101000p:plain

サービスユニットは[Unit],[Service],[Install]のセクションと呼ばれるもので区切られています。

■[Unit]セクションについて

f:id:guri2o1667:20201019101228p:plain

主に、ユニットの説明や、依存関係、前後関係を記載します。
各パラメータの意味は以下の通りです。

f:id:guri2o1667:20201019103115p:plain

■[Service]セクションについて

f:id:guri2o1667:20201019101436p:plain

サービスの起動停止時の処理を定義します。
各パラメータの意味は以下の通りです。

f:id:guri2o1667:20201019105918p:plain

f:id:guri2o1667:20201019110022p:plain

■[Install]セクションについて

f:id:guri2o1667:20201019101527p:plain

ユニットを有効化(systemctl enable)、無効化(systemctl disable)する際に利用される現在のターゲットが記載されます。
例えば上記は、「WantedBy=multi-user.target」となっていますが、
default.targetをgraphical.targetに変更した場合は「WantedBy=graphical.target」になります。

各パラメータの意味は以下の通りです。

f:id:guri2o1667:20201019111242p:plain

■各セクションのパラメータの調べ方について

manページを確認するのが確実です。

man 5 systemd.service


以上です。