Systemdメモ

基本

Unitの種類 * target 複数のUnitをグループ化する * service サービスを起動

Unit名の拡張子で種類が分かる

設定ファイル

systemd全体の設定ファイル * /etc/systemd/system.conf * /etc/systemd/user.conf

特に–unitでの指定が無ければ、下記が読み込まれる

Unitの定義ファイル

/usr/lib/systemd/system デフォルトの設定内容

パッケージをインストールしたらここに.serviceが置かれるみたい。

/etc/systemd/system デフォルトから変更した内容

httpd /usr/lib/systemd/system/httpd.service

変更を加える場合

/etc/systemd/system/httpd.service.d/を作成

limits.confを作成

[service} LimitNOFILE=65536

Unitの定義ファイル2

/usr/lib/systemd/system/には、RPMパッケージが提供するシステム標準の設定を配置しておき、システム管理者が設定変更する場合は、/etc/systemd/systemにファイルをコピーした上で修正を加えます。

頂点

「default.target」というUnitを頂点

依存関係の骨組み

targetタイプのUnitで依存関係の枠組みを作成する

例えば、 /lib/systemd/system/multi-user.target には Requires=basic.target みたいなの書かれている

Requiresを辿って、枠組みを知ることができる?

はじめ

systemd は default.targetにアクセス。

ただし

/etc/systemd/system/default.target

ll /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 37  5月 18 16:03 /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target

このリンクが起動時のランレベルに相当し、このリンクを変えるとランレベルが変更される

「 AはBに依存する」の定義方法

A.service

[Unit]
Wants=B.service

方法2.AのwantsディレクトリにBのシンボリックリンクを作成 A.serviceファイルが存在するディレクトリ上に「A.service.wantsディレクトリを作成し、このディレクトリ内にB.serviceへのシンボリックリンクを作成

/etc/systemd/system/multi-user.target.wants/ など

起動シーケンス

/usr/lib/systemd/systemd 起動

systemdが起動すると、はじめに「default.target」から「Requires/Wants」の関係をたどって、起動するべきUnitの全体を把握

起動対象の各Unitの「After/Before」の依存関係から起動順序を決定

systemdの起動でのメリット

systemdは、順序関係の情報をもとにして、複数のUnitをできるかぎり並列に起動していきます。

参考

enakai00.hatenablog.com