created: 2022-11-15T14:33:53.122Z
ソフトウェアデザインのsystemd実践入門メモ(2)
ソフトウェアデザイン2018年2月号の「systemd実践入門」を読んでメモ。
デーモンの管理
systemd ではデーモンプロセスの管理のために、 xxxx.service
といった命名のファイルにデーモンの起動など諸々の設定を定義することになっている。
サービスファイルの置き場所は2種類
/usr/lib/systemd/system
配下はパッケージが提供する定義/etc/systemd/system
はシステム管理者が独自の定義をしたいときの置き場所
セクション
サービスファイルにはセクションがいくつかある。
Service セクション
ExecStart
といった項目で起動コマンドを定義- プロセス内で利用する環境変数もこのサービスファイルに記述
- Linux の namespace を使って tmpfile のディレクトリを用意したりもする
なお、systemd では起動/停止/再起動以外の操作はこの Service セクションに定義しない。
$ systemctl configtest xxxx.service
などといった独自のサブコマンドを定義したい場合は別途シェルスクリプトを所定の場所において実現することになる。
Unit セクション
サービスはユニットのひとつなので、もちろん Unit セクションもサービスファイルに記述することになる。
Unit セクションはユニットがどのような依存/順序関係を持っているかを定義するものが多い。
Requires
そのユニットが動作するために必要なユニットを列挙する項目- たとえば sshd の場合はネットワーク機能のユニットが動作している必要がある
- ここにかかれた依存ユニットが起動に失敗すると当該ユニットも起動はfailとなる
Wants
は同様に依存するユニットを定義するものだが、依存がfailしても作動させられるようなものを記述する
その他 Before
After
など順序を定義する項目もある。
Install セクション
そのサービスの有効/無効の管理をどうするかを記述するところ。
Alias
はenable(有効)状態のときに、そのしるしにシンボリックリンクを置く場所を定義するWantedBy
RequiredBy
などといった設定項目もあって、これも依存周りのため明示的にシンボリックリンクをおくものらしい(利用例があまりイメージできていない)