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

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

【RHEL8】systemdのUnit(ユニット)について

今回は、systemdの説明とsystemdの説明で必ず出てくるユニット(Unit)についてです。

■systemdとは

過去の記事でOS起動までの流れを記載しておりますが、
その中でsystemdを起動するタイミングがあります。

www.guri2o1667.work


systemdにより、他サービスの起動やマウントが行われます。
他サービスの起動やマウントなどのようにsystemdが管理する対象のことを
総称して「Unitと言います。

■Unit(ユニット)の種類

代表的なユニット(=systemdの管理対象)は以下の通りです。
① service・・・サービス
② device・・・デバイス
③ target・・・ユニットをグループ化したもの
④ mount・・・ファイルシステムのマウント/アンマウント処理

詳細は、こちら

以降、各ユニットについて取り上げます。
各ユニットは.serviceのように、拡張子がユニット名になります。

■各ユニットの確認方法について

以下コマンドで確認可能です。

systemctl list-units -t ユニット種別
例)
systemctl list-units -t service
systemctl list-units -t device
systemctl list-units -t target
systemctl list-units -t mount

■① service

プロセスの起動/停止に関するユニットです。
以下はserviceユニット例です。

ユニットはファイル形式で用意されております。
(自分でユニットファイルを用意することもできます。)
 

f:id:guri2o1667:20201014163810p:plain

ファイル形式のため、ユニットファイルの中身を確認することができます。

 

■② device

カーネルが認識しているデバイス情報を保持しているユニットです。
下記のようにUNIT列に記載されているのがdeviceユニットです。

f:id:guri2o1667:20201014163935p:plain


少し話がそれますが、
udevデーモンによりデバイスファイルが自動的に生成されます。
サーバが認識しているデバイス(ファイル)は、/dev/の下に作成されます。

f:id:guri2o1667:20201014164103p:plain

これらのデバイスファイルの情報は、
/sys/devices/、もしくは/sys/dev/に作成されます。

f:id:guri2o1667:20201014164742p:plain
/sys/dev/は/dev/devicesのシンボリックリンクになっています。

f:id:guri2o1667:20201014164832p:plain

■③ target

前述のserviceやtargetと違い、target単体では何もしません。
ユニット間の依存関係や順序関係を定義するためだけに利用します。

f:id:guri2o1667:20201014165243p:plain

例えば、graphical.targetの場合、設定ファイルは以下の通りです。
serviceユニットとは異なり、サービス起動するためのパラメータ等はなく、
・Reuires(起動前提となるUnitの指定。起動前提ユニットは起動必須)
・Wants(起動前提となるUnitの指定。起動前提ユニットは起動していなくてもよい)
・Conflicts(同時起動がNGのユニットを指定)
・After(先に起動しているユニットの指定。起動順序の指定を意味する。)
が設定されています。
つまり、依存関係や順序関係を定義していることになります


f:id:guri2o1667:20201014165400p:plain

■④ mount

/etc/fstabの内容を基に自動的に生成されるユニットです。

f:id:guri2o1667:20201014170401p:plain

/etc/fstabは以下の通りです。

f:id:guri2o1667:20201014170526p:plain


以上です。