サービスファイルには、 。サービス 拡張機能に必要な命令が含まれています。 システムド サービスを管理するため。
の システムド init system は、を使用してシステムの初期化を管理します。 ユニット 。ユニットは、サービスの管理など、サービスの制御と監視を伴うタスクまたはアクションを実行するオブジェクトです。これらのユニットは基本的に、ユニットの依存関係とコマンドを含むサービス ファイルと呼ばれるファイルです。これらのファイルは、バックグラウンド プロセスを効率的に制御し、リソースを管理するために重要です。
このガイドでは、systemd サービス ファイル、その構造、およびサービスを制御する主なディレクティブについて説明します。
systemd を使用する場合の用語 systemdサービスファイル そして systemdユニットファイル 技術的には同じものを指すため、同じ意味で使用されることがよくあります。
Systemd サービス ファイルとは
Linux では、systemd は、systemd が理解して実行できるように、構成命令が含まれるサービス ファイルを使用してサービスを管理します。
ユニットをリストするには、systemctl を使用します。 –リスト単位 指示。
システムctl --リスト単位
任意のサービスのサービス ファイルを読み取るには、 猫 コマンドにファイルパスを指定します。
猫 [ / サービスファイルのパス ]たとえば、次のサービス ファイルを参照するには、 ssh.サービス 指定されたコマンドを使用します。
猫 / ライブラリ / システムド / システム / ssh.サービス
Systemd サービス ファイルの構造
通常、systemd サービス ユニット ファイルには 3 つのセクションが含まれています。
- ユニット
- サービス
- インストール
サービス固有のユニット ファイルには、 サービス セクション。
サービスはユニットの一種にすぎないことに注意してください。ユニットには、ソケット、デバイス、マウント、自動マウント、スワップ、ターゲット、タイマー、スライス、スコープなどのさまざまなタイプを含めることができます。これらのセクションは、Unit セクションと Install セクションの間に配置されます。ファイル拡張子もそれぞれのユニット タイプに置き換えられます。たとえば、ソケット ユニット タイプには 。ソケット ファイル拡張子。
注記: このガイドでは、管理者や開発者によって広く使用されているサービス ユニット タイプに焦点を当てます。
これらのセクションは角括弧 ([]) で囲まれています。各セクションには、関連する命令セットが含まれています。サービス ファイルの一般的な構造を以下に示します。
[ ユニット ]指令1 =指示 1
指令2 =指示 2
[ サービス ]
指令1 =指示 1
指令2 =指示 2
[ インストール ]
指令1 =指示 1
指令2 =指示 2
セクションの順序は変更できます。ただし、通常は上記の順序に従います。
[単位]セクション
ユニットセクションには、ユニットとユニットの依存関係の説明が含まれています。慣例により、このセクションはサービス ファイルの先頭に配置されます。一般的に使用されるディレクティブを以下に示します。
指令 | 説明 |
説明 | このディレクティブは、サービスの名前を言及するために使用されます。説明の長さは 80 文字を超えてはなりません。 |
ドキュメンテーション | このディレクティブには、サービスのマニュアル ページまたは URL が含まれています。 |
必要 | このディレクティブは、現在のサービスへの依存関係を言及するために使用されます。この依存関係サービスのアクティブ化が実行されない場合、現在のサービスは開始されません。 |
望む | このディレクティブは、現在のサービスへの依存関係を言及するために使用されます。ただし、現在のサービスを実行するためにこの依存関係サービスをアクティブ化する必要はありません。 |
前に | 現在のユニットがアクティブ化された後、このディレクティブで指定されたサービスが開始されます。 |
後 | 現在のユニットがアクティブ化される前に、このディレクティブで指定されているサービスが開始されます。 |
バインド先 | このディレクティブは、現在のサービスを指定されたサービスにリンクします。リンクされたサービスが再起動すると、現在のサービスも再起動されます。 |
これらのディレクティブとは別に、さらに 2 つのディレクティブがあります。 状態 そして 主張する。 多くのサービスは正常に実行するために特定のシステム条件を必要とし、これらのディレクティブはその条件を示すために使用されます。
[インストール]セクション
このセクションは必須ではなく、起動時にサービスのアクティブ化または非アクティブ化が必要な場合にのみ必要です。また、エイリアスサービスについても触れておきます。 「インストール」セクションで一般的に使用されるディレクティブを以下に示します。
指令 | 説明 |
募集中 | このディレクティブは実行レベルを設定します * サービスの対象。目標が設定されている場合 マルチユーザー.ターゲット その後、サービスはこの実行レベルで有効になります。 |
必須者 | このディレクティブは WantedBy に似ていますが、ディレクティブに記載されている依存関係がなくても、サービスは有効になります。 |
エイリアス | このディレクティブは、別の名前のサービスを有効にするために使用されます。サービスが有効になると、この名前でシンボリックリンクが作成されます。 |
ほとんどの場合、 マルチユーザー.ターゲット として使用されます 募集中 パラメータ。しかし、multi-user.target とは何でしょうか?
multi-user.target は、非グラフィカルなマルチユーザー セッションを受け入れる準備ができているシステム状態を表します。 GUIを起動する前の状態です。
システムにはさまざまな実行レベルがあります。これらの実行レベルの機能について学びましょう。
systemd では、サービスは実行レベルに基づいてグループ化されます。 ターゲット 。各実行レベルには次のファイルがあります。 。目標 の拡張子 /etc/systemd/システム ディレクトリ。サービスは実行レベルの状態に基づいて実行されます。
実行レベル | ターゲット | 州 | ファイル |
0 | 電源を切る | シャットダウンして電源を切る | パワーオフ.ターゲット |
1 | 救援 | レスキューシェルを開始します | レスキュー.ターゲット |
2、3、4 | マルチユーザー | マルチユーザーの非 GUI シェルを開始します | マルチユーザー.ターゲット |
5 | グラフィカルな | マルチユーザーGUIシェルを確立します | グラフィカル.ターゲット |
6 | リブート | シャットダウンして再起動する | 再起動.ターゲット |
[サービス]セクション
このセクションは、サービスの構成設定で構成されます。このセクションの主な構成は、サービスの開始時に実行されるタイプとコマンドを定義することです。 タイプ そして ExecStart は、サービスをセットアップするために使用される主なディレクティブです。
さまざまな種類のサービスを次の表に示します。
サービスの種類 | 説明 |
単純 | これは、タイプまたはバス名が指定されておらず、ExecStart のみが指定されている場合のデフォルトのタイプです。 systemd は最初にメインプロセスを実行し、次に後続のユニットを実行します。 |
フォーク | このタイプは、親サービスが閉じている場合でもサービスを実行し続けるために使用されます。親プロセスの終了後に子プロセスをフォークします。 |
ワンショット | systemd は最初にメインプロセスを実行し、メインプロセスが終了すると後続のユニットが開始されます。 |
dバス | dbus を使用したサービスは、バス上の別のプロセスと通信するために使用されます。バス名が指定されている場合は、バス名を取得した後にプロセスが起動されます。 |
通知する | サービスはプロセスの開始時に通知します。 systemd は、通知が発行された後、後続のユニットに進みます。 |
アイドル状態 | すべてのアクティブなジョブがディスパッチされるまでサービスを保持します。主にコンソール出力を改善するのに役立ちます。 |
Service セクションで一般的に使用されるディレクティブを以下に示します。
指令 | 説明 |
ExecStart | プロセスを開始するために実行されるコマンドのフルパスが保持されます。 |
ExecStartPre | メインプロセスが開始される前に実行する必要があるコマンドが保持されます。 |
ExecStartPost | メインプロセスの開始後に実行する必要があるコマンドが保持されます。 |
ExecReload | サービス構成を再ロードするコマンドが保持されます。 |
再起動 | 失敗時、成功時、異常時、中止時、ウォッチドッグ時などの状況でサービスを自動的に再起動します。 |
再起動秒 | サービスが自動的に再起動されるまでの秒数を保持します。 |
の ExecStart これは、Service セクションで使用される重要なディレクティブの 1 つです。含まれているのは、 実行可能ファイルのフルパス 呼び出し時にサービスが実行されること。
結論
systemd サービス ファイルは、systemd で管理できるようにディレクティブとコマンドで構造化された構成ファイルです。これらのファイルには、systemd によるサービスの管理方法を示す指示が含まれています。このガイドでは、systemd サービス ファイル、そのセクション、およびサービスを管理するディレクティブにアクセスする方法について説明しました。サービス ファイルの手順の詳細については、公式ドキュメント ガイドを参照してください。 ここ 。