###### tags: `その他` # systemd  ## サービス登録 ユニットファイルを配置して、systemdに読み込ませる。 1. ユニットファイルの配置 `/etc/systemd/system/<UNIT_FILE>` 2. systemdを読み込み直しする `systemctl daemon-reload` --- ## コマンド操作 **サービス一覧表示** `systemctl list-unit-files` **サービス状態確認** `systemctl status <UNIT_NAME>` **サービス開始/終了** `systemctl start <UNIT_NAME>` `systemctl stop <UNIT_NAME>` **サービス自動起動の有効化/無効化** `systemctl enable <UNIT_NAME>` `systemctl disable <UNIT_NAME>` # ユニットファイルの書き方 非常に勉強になる記事 https://enakai00.hatenablog.com/entry/20130917/1379374797 ## 構成 - Unit: ユニットの説明, 依存関係 - Service: 起動/再起動設定 - Install: 自動起動設定 ## Example ```unit [Unit] Description=OpenSSH server daemon Documentation=man:sshd(8) man:sshd_config() After=network.target sshd-keygen.service Wants=sshd-keygen.service [Service] Type=notify EnvirionmentFile=/etc/sysconfig/sshd ExecStart=/usr/sbin/sshd -D $OPTIONS KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target ``` --- ### Unit **【Description】** サービス詳細表示した時の説明文 **【After】** 作成しているユニットがどのユニットに依存しているか定義 --- ### Service **【Type】** 実行方法の定義 | Type | 説明 | | -------- | -------- | | simple | デフォルト<br>サービス起動コマンド(ExecStart)がそのままメインプロセスの場合 | | forking | 子プロセスをフォークしてバックグラウンドに回して、最初のコマンド自体は終了する場合 | | oneshot | サービス起動コマンドを実行して、それが完了したタイミングで起動完了と判断する場合 | **【Environment】** 実行時に取り込む環境変数の定義 **【ExecStart】** 実行するコマンド **【Restart, RestartSec】** アプリ停止時の再起動設定 --- ### Install **【WantedBy】** `systemctl enable`で自動起動を有効化した際に、どの Unitの前提として設定されるべきかを指定する。 基本的に`multi-user.target`で大丈夫