この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 10964|答える: 8

[Linux] Linux systemdサービスマネージャーの詳細な説明

[リンクをコピー]
掲載地 2021/11/28 10:02:32 | | | |
systemdはLinuxシステム向けの基本的な構成要素のセットです。 システムおよびサービスマネージャーを提供し、PID 1としてシステムの残りの部分を実行・起動します。

systemdは積極的な並列化機能を提供し、ソケットとDバスのアクティベーションを使ってサービスを開始し、オンデマンドでのデーモン起動を提供し、Linuxコントロールグループを使ってプロセスを追跡し、マウントや自動マウントポイントを維持し、よく設計されたトランザクション依存ベースのサービス制御ロジックを実装しています。 systemdはSysVおよびLSBのinitスクリプトをサポートし、sysvinitの代替が可能です。

その他のセクションには、ログデーモン、ホスト名、日付、ロケーションなどの基本的なシステム設定を制御するユーティリティ、ログインユーザーリストの管理やコンテナや仮想マシンの実行、システムアカウント、ランタイムディレクトリ、設定、さらには単純なネットワークのデーモン設定管理、ネットワーク時間同期、ログ転送、名前解決などが含まれます。

systemdの設定ファイルは以下の3つのフォルダに存在します:         

/etc/systemd/system 存放系统启动的默认级别及启动的unit的软连接,优先级最高。

/run/systemd/system 系统执行过程中产生的服务脚本,优先级次之。

/usr/lib/systemd/system 存放系统上所有的启动文件,优先级最低。
復習:

LinuxはSystemdサービスのログ出力を扱います
https://www.itsvse.com/thread-10154-1-1.html

Jenkins(4) Linuxノードを追加し、サービスとして登録する
https://www.itsvse.com/thread-10120-1-1.html

CentOS 7はNode exporterをインストールします
https://www.itsvse.com/thread-9969-1-1.html

ユニット概要

systemdにおけるユニットファイルとは、systemdが管理可能なさまざまなユニットに関する情報(サービス、ソケット、デバイスなど)をエンコードするファイルです。 このガイドはサービスに焦点を当てており、その場合、私たちが扱っているユニットファイルは.serviceファイルです。 varnish.service デバイス設定ファイルには、systemdがvarnish daemonをどのように実行、監視、管理すべきかに関する情報が含まれています。

[Unit]ブロックは通常、設定ファイルの最初のブロックであり、ユニットのメタデータと他のユニットとの関係を定義するために使われます。 主な畑は以下の通りです。

  • 説明:簡単な説明
  • 書類:書類の住所
  • 必要条件:現在のユニットが依存しているその他のユニットで、それらが稼働していなければ、現在のユニットは起動できません
  • 欲しいもの:現在のユニットと連携している他のユニット。もしそれらが稼働していなければ、現在のユニットは起動に失敗しません
  • BindsTo:Requiresと同様に、現在のユニットが終了すると動作を停止させるユニットを指定します
  • ビフォー:このフィールドで指定されたユニットも起動する場合、現在のユニットの後に起動しなければなりません
  • 後:このフィールドで指定されたユニットも開始される場合は、現在のユニットより先に開始しなければなりません
  • 競合点:ここで指定されたユニットは、現在のユニットと同時に稼働することはできません
  • 条件。。。 : 現在のユニットが動作するために満たなければならない条件、そうでなければ動作しません
  • 主張する。。。 : 現在のユニットが動作するために満たなければならない条件を伝え、そうでなければ起動失敗が報告されます

[インストール]は通常、設定ファイルの最後のブロックで、起動方法や起動の有無を定義します。 主な畑は以下の通りです。

  • WantedBy:その値は1つ以上のTargetsであり、現在のユニットがアクティブ(有効)な場合、シンムリンクは/etc/systemd/systemディレクトリのサブディレクトリにTarget名+.wantsの接尾辞付きで置かれます
  • RequiredBy:その値は1つ以上のターゲットであり、現在のユニットがアクティブの場合、シンムリンクは/etc/systemd/systemディレクトリの下にTarget名+.requiredの接尾辞付きサブディレクトリに配置されます
  • エイリアス:現在のユニットが開始に使用できるエイリアス
  • また、現在のユニットが起動すると、他のユニットも同時に起動されます

[サービス]ブロックはサービスの設定に使われ、このブロックを持つのはサービスタイプのユニットのみです。 主な畑は以下の通りです。

  • タイプ:起動時のプロセスの動作を定義します。 以下の値を持っています。
  • Type=simple:デフォルト値で、ExecStartが指定したコマンドを実行してメインプロセスを起動します
  • type=forking:forkは親プロセスから子プロセスを作成し、作成直後に終了します
  • Type=oneshot:一度きりのプロセスで、Systemdは現在のサービスが終了するのを待ちながら実行を続けます
  • タイプ=dbus:現在の運行はDバス経由で開始されます
  • type=notify:現在のサービスが開始されると、Systemdに通知され実行が続行されます
  • type=idle:現在のサービスは他のタスクが実行された場合にのみ実行されます
  • ExecStart:現在のサービスを開始するためのコマンド
  • ExecStartPre:現在のサービスを開始する前に実行されたコマンド
  • ExecStartPost:現在のサービス開始後に実行されたコマンド
  • ExecReload:現在のサービスが再起動されたときに実行されるコマンド
  • ExecStop:現在のサービスが停止されたときに実行されるコマンド
  • ExecStopPost:実行されたコマンドを停止します
  • RestartSec:自動サービスが現在のサービスを再起動する間の秒数
  • 再起動:Systemdが現在のサービスを自動で再起動する状況を定義し、常に、成功時、失敗時、異常時、アボート時、ウォッチドッグ上などの値を含みます
  • TimeoutSec:Systemdが現在のサービスを停止するまでの待機秒数を定義します
  • 環境:環境変数を指定します

Systemctl管理ツール

CentOSのプログラム管理は基本的にツールsystemctlによって行われます。

スタートアップサービス:

systemctl start name.service

サービス中止:

systemctl stop name.service

再開サービス:

systemctl restart name.service

状況表示:

systemctl status name.service

条件付き再開始:

サービスが以前に開始されていた場合は再開され、サービスが始まらなければ運行されません

SystemCTL try-restart name.service

リロードまたは再起動:

まずリロードし、リロードが失敗したら再起動します

systemctl reload-or-restart name.service

リロードまたは条件付き再起動:

SystemCTL reload-or-try-restart name.service

ユーザーが状態を開始するためにサービスを設定できるかどうかを設定します。

systemctl unmask name.service

systemCTL マスク名.サービスは禁止されています

サービスの現在のアクティベーション状況をご覧ください:

サービス開始コマンドのステータス返却値は0です。未開始命令のステータス返却値は0ではありません。

systemctl is-active name.service

起動されたすべてのサービスをご覧ください:

-t 表示されるユニットの種類を指定します。

――すべてがより詳細な情報リストを表示します。

-同値なもの --すべて

systemCTL リストユニット

systemCTL リスト-ユニット -T サービス

systemCTL list-units -t service -a

すべてのサービスを見る:

systemCTL リスト-ユニット -A

すべてのサービス状況を見る:

systemctl list-unit-files

-a 、--all : すべてのサービスの状況を見る

-t 、--タイプ:表示するユニットの種類を指定します

loaded:設定ファイルが読み込まれ、メモリにロードされました

アクティブ(実行中):連続して1回以上処理される実行

アクティブ(終了):ワンタイム設定が正常に完了します

アクティブ(待機中):走り、イベントを待っている

inactive:不运行

enabled:开机启动

disabled:开机不启动

static:开机不启动,但可被另一个启用的服务激活

サービスが有効・無効化される運用レベルを一覧表示するために使われます

ls /etc/systemd/system/*.wants/sshd.service

systemCTL list-unit-files --type target --all

サービスを開始しないように設定するには:

systemCTL サービス名ユニットを無効化

サービスが起動されて起動されているか確認してください:

systemCTL is-enabled name.service

サービスの依存関係を見てみましょう:

SystemCTL list-dependencies Name.service
systemCTL list-depebdencies

重荷重サービス:

systemCTL daemon-reload

プロセスを終わらせる:

systemCTL キル プロセス名

リソース:

ハイパーリンクのログインが見えます。
ハイパーリンクのログインが見えます。
ハイパーリンクのログインが見えます。
ハイパーリンクのログインが見えます。





先の:LinuxはCurlコマンドを使ってLDAP接続性をテストします
次に:VSFTPアップロードファイル権限の問題
 地主| 掲載地 2021/12/11 17:35:26 |
[ユニット]ブロックは通常、ユニットのメタデータとそれが他のユニットとの関係を定義する設定ファイルの最初のブロックです。 主な畑は以下の通りです。

説明:簡単な説明
書類:書類の住所
必要条件:現在のユニットが依存しているその他のユニットで、それらが稼働していなければ、現在のユニットは起動できません
欲しいもの:現在のユニットと連携している他のユニット。もしそれらが稼働していなければ、現在のユニットは起動に失敗しません
BindsTo:Requiresと同様に、現在のユニットが終了すると動作を停止させるユニットを指定します
ビフォー:このフィールドで指定されたユニットも起動する場合、現在のユニットの後に起動しなければなりません
後:このフィールドで指定されたユニットも開始される場合は、現在のユニットより先に開始しなければなりません
競合点:ここで指定されたユニットは、現在のユニットと同時に稼働することはできません
条件。。。 : 現在のユニットが動作するために満たなければならない条件、そうでなければ動作しません
主張する。。。 : 現在のユニットが動作するために満たなければならない条件を伝え、そうでなければ起動失敗が報告されます
[インストール]通常、設定ファイルの最後のブロックで、起動方法や起動の有無を定義します。 主な畑は以下の通りです。

WantedBy:その値は1つ以上のTargetsであり、現在のユニットがアクティブ(有効)な場合、シンムリンクは/etc/systemd/systemディレクトリのサブディレクトリにTarget名+.wantsの接尾辞付きで置かれます
RequiredBy:その値は1つ以上のターゲットであり、現在のユニットがアクティブの場合、シンムリンクは/etc/systemd/systemディレクトリの下にTarget名+.requiredの接尾辞付きサブディレクトリに配置されます
エイリアス:現在のユニットが開始に使用できるエイリアス
また、現在のユニットが起動すると、他のユニットも同時に起動されます
[サービス]ブロックはサービスの設定に使われ、このブロックを持つのはサービスタイプのユニットのみです。 主な畑は以下の通りです。

タイプ:起動時のプロセスの動作を定義します。 以下の値を持っています。
Type=simple:デフォルト値で、ExecStartが指定したコマンドを実行してメインプロセスを起動します
type=forking:forkは親プロセスから子プロセスを作成し、作成直後に終了します
Type=oneshot:一度きりのプロセスで、Systemdは現在のサービスが終了するのを待ちながら実行を続けます
タイプ=dbus:現在の運行はDバス経由で開始されます
type=notify:現在のサービスが開始されると、Systemdに通知され実行が続行されます
type=idle:現在のサービスは他のタスクが実行された場合にのみ実行されます
ExecStart:現在のサービスを開始するためのコマンド
ExecStartPre:現在のサービスを開始する前に実行されたコマンド
ExecStartPost:現在のサービス開始後に実行されたコマンド
ExecReload:現在のサービスが再起動されたときに実行されるコマンド
ExecStop:現在のサービスが停止されたときに実行されるコマンド
ExecStopPost:実行されたコマンドを停止します
RestartSec:自動サービスが現在のサービスを再起動する間の秒数
再起動:Systemdが現在のサービスを自動で再起動する状況を定義し、常に、成功時、失敗時、異常時、アボート時、ウォッチドッグ上などの値を含みます
TimeoutSec:Systemdが現在のサービスを停止するまでの待機秒数を定義します
環境:環境変数を指定します


 地主| 掲載地 2021/12/11 17:37:33 |
タイプ=フォーク
SystemDは、サービスプロセスがフォークされ親プロセスが終了した時点でサービスが正常に開始されると考えます。 通常のデーモンの場合、この起動方法がニーズに合わないと確信が持てない限り、このタイプから始めても構いません。 このスタートアップタイプでは、PIDFile=も指定し、systemdがサービスの主要プロセスを追跡できるようにすべきです

 地主| 掲載地 2021/12/15 16:55:14 |
EnvironmentFile コマンド

EnvironmentFileはEnvironmentディレクティブに似ていますが、テキストファイルから環境変数を読み込みます。 テキストファイルには、行改行で区切られた変数割り当てを含めるべきです



この環境ファイルを取り、その変数を以下のように使用できます:



 地主| 掲載地 2022/01/04 15:56:55 |
 地主| 掲載地 2022/01/05 9:48:21 |
Docker デフォルトサービスファイルパス /usr/lib/systemd/system/docker.service

 地主| 掲載地 2022/01/23 22:57:56 |
すべてのサービス状況を見る



NFSを例に挙げて、サービスが稼働しているかどうかを問い合わせます:

 地主| 掲載地 2025/02/25 17:01:08 |
ABCで始まるサービスは一括開始

 地主| 掲載地 2025/04/11 15:57:14 |
DefaultTimeoutStartSec=およびDefaultTimeoutStopSec=は、システムマネージャーではデフォルトで90秒、ユーザーマネージャーでは90秒となります。

ハイパーリンクのログインが見えます。

指定されたサービスの構成は以下のコマンドで確認できます:


免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com