それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

sysd の管理単位-ユニット

systemd の管理単位

systemd は起動のすべてを 「ユニット」という単位で管理する。

ユニットは「Service」が代表例で、/etc/init.d/ に記述するようなサービスDaemonはすべて「Service unit」 として管理される。

ユニットには、service の他に、 target mount service device などがある。

これらのユニットには依存関係が記述されている。systemd はこれらの依存関係を事前に読み込んで解釈し「起動順序」を明確にする。それにより起動処理をマルチ化して高速化が可能になっている。

旧来に sysV init では /etc/rcX.d に記述されたスクリプトを「一つずつ」順番に起動していたので時間がかかっていた。Upstartでもこのあたりの解決は試みられていたがLinuxはSystemdを採用する方向のようです。Systemdから今後も変わらないことを祈るばかりです。

事前ロードがポイント

事前に依存関係や要求関係や、どのタイミングで実行するか。それらを解釈して並び替える処理が入る。その並び替え・依存関係・タイミングの管理単位が「ユニット」。

そのためリロードが必要。

常駐する自作ユニットファイルでデーモンを動かすときに、 daemonsのunit をリロードしてキャッシュを更新しないといけない。

sudo systemctl daemon-reload

そのためこのリロードコマンドが必要になっている。

ユニットの種類

systemd のユニットのタイプ別に一覧する。

ユニットはその役割ごとにそれぞれタイプが存在する。それは次のようになっている。

takuya@:~$ systemctl list-units  --type
automount  device     mount      path       service    snapshot   socket     swap       target     timer

よく使うのは、service 一覧だと思う。

参考資料

http://enakai00.hatenablog.com/entry/20130914/1379146157