Systemd 入門ガイド:実践編

< Systemd 入门教程:命令篇

Systemd 入門ガイド:実践編

著者: 阮一峰:阮一峰(阮一峰)

日付: 2016年3月8日 → 2016年3月8日

前回の記事では、Systemdを紹介しました。 主なコマンド 今日は、それを使って基本的なタスクを完了する方法をお伝えします。 bg2016030801

一、起動します

Systemdをサポートするソフトウェアでは、インストール時に自動的に /usr/lib/systemd/system カタログに設定ファイルを追加してください。このソフトウェアを起動時に自動的に起動させる場合は、以下のコマンドを実行してください(以下の通り)。 httpd.service (例)

上記のコマンドは、以下の意味に相当します。 /etc/systemd/system カタログにシンボリックリンクを追加して、指す /usr/lib/systemd/system 中に入ってる httpd.service ファイル。これは、起動時に、 Systemd ただ実行する /etc/systemd/system 「目次内の設定ファイル。これは、変更した設定ファイルをそのフォルダに配置すれば、元の設定を上書きできるという意味です。」

二、サービス開始

起動設定後に、ソフトウェアはすぐに起動しません。次回起動まで待つ必要があります。今すぐにこのソフトウェアを実行したい場合は、以下の手順を実行してください。 systemctl start 命令。起動後すぐにはソフトウェアが立ち上がりません。次回起動まで待つ必要があります。今すぐに実行したい場合は、次の操作を行います。 systemctl start 命令です。

コマンドを実行した後、起動失敗する可能性がありますので、使用してください systemctl status サービスの状態を確認してください。

上記の出力結果の意味は以下の通りです。

Loaded行:設定ファイルの場所、起動時に設定するかどうか Active行:実行中 Main PID行:メインプロセスID Status行:アプリケーション(ここではhttpd)が提供するソフトウェアの現在の状態 CGroupブロック:アプリケーションの全てのサブプロセス ログブロック:アプリケーションのログ

三、サービス停止

サービスを停止させるには、以下の操作を行います。 systemctl stop 命令です。

有时候,该命令可能没有响应,服务停不下来。这时候就不得不"杀进程"了,向正在运行的进程发出 kill 信号。→ 信号(しんごう)

それに、サービスの再起動は以下のように実行します systemctl restart 命令です。

④ 設定ファイルを読み解く

サービスの起動方法は、設定ファイルによって決定されます。以下に、設定ファイルの内容を見てみましょう。

前述のように、設定ファイルは主に /usr/lib/systemd/system 目次、もしくは /etc/systemd/system 目次。設定ファイルを見つけたら、テキストエディタで開いてください。 systemctl cat コマンドは設定ファイルを確認するために使われます。以下では、 sshd.service ファイルを例に、SSHサーバーを起動し、他のユーザーがSSHでログインできるようにします。

ファイルはいくつかのブロックに分かれており、各ブロックにはいくつかのキーペアがあります。

以下に各ブロックの内容を順に説明します。

五、[ユニット] ブロック:起動順と依存関係。

Unit ブロックの Description 現在のサービスの簡単な説明を提供してください。 Documentation フィールドはドキュメントの位置を示します。次の設定は、起動順序と依存関係で、非常に重要です。

After フィールド:表示する場合 network.target 「または」 sshd-keygen.service それを起動する必要がありますね。 sshd.service それらの後に始めるべきです。

それに、もう一つあります。 Before フィールド、定義 sshd.service どのサービスの前に起動すべきか。注意、 After 「わ」 Before フィールドは起動順序のみに関連し、依存関係には関係ありません。

例えば、あるWebアプリケーションはPostgreSQLデータベースでデータを保存する必要があります。設定ファイルでは、PostgreSQLの後に起動するように定義されていますが、依存関係として定義されていません。リリース後、何らかの理由でPostgreSQLが再起動する必要があり、サービス停止中にWebアプリケーションはデータベース接続を確立できません。依存関係を設定 Wants フィールドと Requires フィールド。

Wants フィールド:表現 sshd.service 「とともに」 sshd-keygen.service 之间存在"弱依赖"关系,即如果"sshd-keygen.service"启动失败或停止运行,不影响 sshd.service 続行します。

Requires 字段则表示"强依赖"关系,即如果该服务启动失败或异常退出,那么 sshd.service も辞退する必要もあります。

注意してください。 Wants フィールドと Requires フィールドは依存関係のみに関連し、起動順序には関係ありません。デフォルトでは同時に起動します。

6. サービスブロック:アクション開始

Service ブロック定義で現在のサービスを起動する方法を示します。

6.1 启動コマンド

多くのソフトウェアには、環境パラメータファイルがあり、それを使って EnvironmentFile フィールド読み込み。

EnvironmentFile フィールド:現在のサービスの環境パラメータファイルを指定します。そのファイル内の key=value キーペア、使える $key の形式、現在の設定ファイルから取得します。

上記の例では、sshdの環境設定ファイルは /etc/sysconfig/sshd 最も重要なフィールドは、設定ファイル内です。 ExecStart

ExecStart フィールド:プロセスを起動する際に実行するコマンドの定義。

上の例では、起動 sshd 実行したコマンドは: /usr/sbin/sshd -D $OPTIONS その中の変数 $OPTIONS 来自:出身、来る(から) EnvironmentFile 指定の環境パラメータファイル。同様の機能を持つ以下のフィールドがあります。

ExecReload フィールド:サービス再起動時の実行コマンド

ExecStop フィールド:サービス停止時に実行されるコマンド

ExecStartPre サービス開始前に実行するコマンド:サービス開始前のコマンド

ExecStartPost フィールド:サービス開始後の実行コマンド

ExecStopPost フィールド:サービス停止後に実行するコマンド

以下の例をご覧ください。

上記の設定ファイル、2行目 ExecStart 空値に設定すると、第1行の設定がキャンセルされます。実行結果は以下の通りです。

すべての起動設定の前に、連続線(-)を加えることができます。 - ),表示"抑制错误",即发生错误的时候,不影响其他命令的执行。比如, EnvironmentFile=-/etc/sysconfig/sshd (注意等号の後の短剛号が)、「~と、即ち、」と表します。 /etc/sysconfig/sshd ファイルは存在せず、エラーも発生しません。

6.2 起動種類

Type フィールドの定義を起動タイプに。設定できる値は以下の通りです。

シンプル(デフォルト値): ExecStart フィールドで起動するプロセスはメインプロセスです。

forking: ExecStart フィールドは fork() 方式起動時、親プロセスは終了し、子プロセスがメインプロセスになる。

ワンショット:似ている simple しかし、一度のみ実行され、Systemdはそれが終了するまで他のサービスの起動を待ちます。

DBus:似ている simple D-Bus信号を受け取ってから起動します。

通知:似たような simple 起動が完了すると通知シグナルが送信され、その後Systemdが他のサービスを起動します。

遊休の:類似する simple しかし、他のタスクが終わるまでそのサービスは開始されません。そのサービスの出力が他のサービスの出力と混ざらないようにするための使用例があります。

上の設定ファイル、起動種類を設定して oneshot このサービスは一度実行すれば十分で、長期にわたって実行する必要はありません。もし、将来的に再び開きたい場合は、設定ファイルを以下のように変更してください。

上記の設定ファイル中、 RemainAfterExit フィールドを設定します yes プロセスが終了しても、サービスは継続して実行されます。そのため、一旦使用すると、 systemctl stop サービスを停止させろ。 ExecStop 指定のコマンドを実行し、タッチパッドを再起動します。

6.3 リスタート動作

Service ブロックには再起動行動を定義するフィールドがあります。

KillMode フィールド:Systemdでsshdサービスを停止する方法を定義。

上記の例では、 KillMode 設定します。 process 主プロセスのみ停止し、sshdのサブプロセスは停止しない、つまりサブプロセスで開かれたSSHセッションは維持される。この設定はあまり一般的ではないが、sshdには重要で、サービスを停止した際に自分が開いたSSHセッションも一緒に強制終了されることがない。

KillMode フィールドで設定できる値は以下の通りです。

control-group(デフォルト):現在の制御グループ内のすべてのサブプロセスが終了されます

简洁:プロセス:メインプロセスのみ削除

親プロセスはSIGTERMシグナルを受け取り、子プロセスはSIGKILLシグナルを受け取ります。

:プロセスは削除されず、サービスの停止コマンドを実行だけです。

次には Restart フィールド。

Restart フィールド:sshdが終了した後、Systemdの再起動方法を定義。

上の例では、 Restart 設定します。 on-failure 予期せぬ失敗が発生した場合、sshdを再起動します。sshdが通常で終了した場合(例えば実行 systemctl stop (命令),再起動しない。

Restart フィールドで設定できる値は以下の通りです。

no(デフォルト):終了後、再起動しない

on-success:正常終了時(終了コードが0)のみ再起動

on-failure:異常終了時(終了コードが0でない場合)、シグナルによる終了やタイムアウトを含め、再起動します。

on-abnormal:シグナルで終了またはタイムアウトしたときのみ再起動

on-abort:未捕獲信号で終了した場合のみ再起動

on-watchdog:タイムアウトで終了し、再起動

どんな理由で辞めたとしても、いつも再開です。

ダムプロセスについては、以下のように設定することをお勧めします: on-failure エラーログアウトを許可するサービスには、設定可能です。 on-abnormal

最後に RestartSec フィールド。

RestartSec フィールド:Systemdがサービスを再起動する前に待つ必要のある秒数を表します。上の例では42秒の待機時間が設定されています。

7. [インストール] ブロック

Install ブロック、この設定ファイルのインストール方法、つまり起動時の自動実行方法の定義です。

WantedBy フィールド:サービスの対象となるターゲットを示します。

Target の意味はサービスグループで、サービスのセットを指します。 WantedBy=multi-user.target これは、sshdが所在するターゲットを指しています。 multi-user.target この設定は非常に重要です、なぜなら実行… systemctl enable sshd.service 命令の際、 sshd.service のシンボリックリンクは、置かれるでしょう。 /etc/systemd/system 目次の下に multi-user.target.wants サブディレクトリ内で、Systemdにはデフォルトの起動ターゲットがあります。

上記の結果は、デフォルトの起動ターゲットは multi-user.target このグループの全サービスは起動時に開始されます。そのためです。 systemctl enable コマンドが起動時の自動起動を設定できる理由は、ターゲットを使うとき、 systemctl list-dependencies 命令と systemctl isolate コマンドも役立ちます。

一般的には、一般的に使用されるターゲットは二つあります:一つは multi-user.target ,マルチユーザーコマンドラインの状態を示す;もう一个是 graphical.target GUI状態を表すもので、依存しています。 multi-user.target 公式文書には非常に鮮明な画像があります。 ターゲット依存関係図

第8章:Targetの設定ファイル

ターゲットにも設定ファイルがあります。

注意:Target設定ファイルには起動コマンドがありません。上記の結果では、主要なフィールドの意味は以下の通りです。

Requires フィールド:要求 basic.target 一緒に動く。

Conflicts フィールド:衝突フィールド。もし rescue.service 「または」 rescue.target 動作中 multi-user.target 動かない、逆も然り。

After :表記します multi-user.target 在 (さい) basic.target rescue.service rescue.target 後に起動します。それがあれば。

AllowIsolate 許可します systemctl isolate コマンド切換え multi-user.target

9、設定ファイルを変更後、再起動してください。

設定ファイルを修正後、設定ファイルを再読み込みし、関連サービスを再起動する必要があります。

(終了)

文書情報

著作権表示:自由転載-非商業用途-非派生作品-著者名保持 クリエイティブ・シェア3.0 ライセンス

発行日:2016年3月8日

最近使用した:

収蔵 メニュー QQ