これはなに

systemdサービスファイルの作成方法と設定手順のメモ。いつも忘れるのでメモしておくだけ。
手順

1. systemdサービスファイルを作成する

以下のコマンドを実行して、systemdサービスファイルを作成または編集する。
your-service-name は任意のサービス名に置き換えること。sudo nano /etc/systemd/system/your-service-name.serviceするとエディタが開くので、設定を記述する。例を以下に示す。
[Unit]
Description=Cronitor Dashboard
After=network.target
[Service]
Type=simple
User=nakurei
ExecStart=/usr/bin/cronitor dash --port 9000
Restart=on-failure
[Install]
WantedBy=multi-user.targetUnit セクションではサービスの説明や依存関係を設定する。After=network.target はネットワークが利用可能になった後でサービスを起動することを意味する。他に Requires= や Wants= を使えば、依存関係を詳細に設定できる。
Service セクションではサービスの動作方法を定義する。User= はサービスを実行するユーザーを指定し、ExecStart= は実行するコマンドを指定する。終了時のコマンドは ExecStop= で指定できる。Restart= はサービスが失敗した場合の再起動ポリシーを設定する。
Restert=on-failure はサービスが異常終了した場合に再起動することを意味する。
Install セクションではサービスのインストールに関する設定を定義する。WantedBy= はサービスがどのターゲットに関連付けられるかを指定する。multi-user.target は通常のマルチユーザーモードでサービスを起動することを意味する。
以上を記述したら、保存してエディタを閉じる。
ちなみに、このファイルは /etc/systemd/system/ ディレクトリに保存される。
ls /etc/systemd/system/your-service-name.service2. systemdサービスをリロードする

systemdサービスファイルを作成または編集した後、以下のコマンドを実行してsystemdをリロードする。
sudo systemctl daemon-reload3. systemdサービスを有効化して起動する

systemdサービスファイルを新規作成した場合は、以下のコマンドを実行する。
your-service-name は任意のサービス名に置き換えること。sudo systemctl enable your-service-name
sudo systemctl start your-service-name新規作成ではなく編集した場合は、以下のコマンドを実行する。
sudo systemctl restart your-service-name4. systemdサービスの状態を確認する

以下のコマンドで、実行状態を確認できる。
your-service-name は任意のサービス名に置き換えること。sudo systemctl status your-service-name正常に起動していれば、active (running) と表示される。
5. systemdサービスのログを確認する

以下のコマンドで、サービスのログを確認できる。
your-service-name は任意のサービス名に置き換えること。sudo journalctl -u your-service-name -f-f オプションを付けると、リアルタイムでログを監視できる。
