1.7. カスタムユニットファイルの作成
最初からユニットファイルを作成するユースケースはいくつかあります。カスタムデーモンを実行し、sshd サービスの 2 番目のインスタンスを使用したカスタムユニットファイルの作成 のように、既存サービスの 2 番目のインスタンスを作成できます。
一方、既存ユニットの動作の変更または拡張のみを実行する場合は、既存のユニットファイルの変更 の手順を使用してください。
手順
-
カスタムサービスを作成するには、サービスを含む実行ファイルを準備します。ファイルには、カスタムで作成されたスクリプト、またはソフトウェアプロバイダーによって提供された実行ファイルを含めることができます。必要な場合は、カスタムサービスのメインプロセスの PID を保持するため、PID ファイルを用意します。サービスのシェル変数を保存する環境ファイルを含めることもできます。(
chmod a+x
を実行して) ソーススクリプトを実行でき、インタラクティブではないことを確認してください。 /etc/systemd/system/
ディレクトリーにユニットファイルを作成し、ファイルに適切なパーミッションがあることを確認します。root
で以下のコマンドを実行します。# touch /etc/systemd/system/<name>.service # chmod 664 /etc/systemd/system/<name>.service
<name> は、作成するサービスの名前に置き換えます。ファイルは実行可能である必要はないことに注意してください。
作成した
<name>.service
ファイルを開き、サービス設定オプションを追加します。作成するサービスのタイプに応じてさまざまなオプションを使用できます。ユニットファイル構造 を参照してください。以下は、ネットワーク関連サービスのユニットの設定例になります。
[Unit] Description=<service_description> After=network.target [Service] ExecStart=<path_to_executable> Type=forking PIDFile=<path_to_pidfile> [Install] WantedBy=default.target
-
<service_description> は、ジャーナルログファイルおよび
systemctl status
コマンドの出力に表示される有用な説明です。 -
After
設定により、このサービスは、ネットワークの実行後にのみ開始されます。関連するサービスまたはターゲットは、スペースで区切って追加します。 - path_to_executable は、サービス実行ファイルへのパスを表します。
-
Type=forking
は、fork システム呼び出しを行うデーモンに使用します。サービスのメインプロセスは、path_to_pidfile で指定した PID で作成されます。重要な [Service] セクションのオプション で別の起動タイプを検索できます。 -
WantedBy
では、サービスを開始する必要がある 1 つ以上のターゲットを指定します。ターゲットは、従来のランレベルの概念に代わるものとお考えください。
-
<service_description> は、ジャーナルログファイルおよび
新しい
<name>.service
ファイルが存在することをsystemd
に通知します。# systemctl daemon-reload # systemctl start <name>.service
警告新しいユニットファイルを作成したり、既存のユニットファイルを修正したら常に
systemctl daemon-reload
コマンドを実行します。このコマンドを実行しないと、systemd
のステータスと、ディスクの実際のサービスユニットファイルのステータスが一致しなくなるため、systemctl start
コマンドやsystemctl enable
コマンドが失敗する可能性があります。ユニット数が多いシステムでは、各ユニットのステータスをシリアライズし、その後再読み込み時にデシリアライズする必要があるため、これには時間がかかることがあります。