GNU/Linux >> Linux の 問題 >  >> Linux

Ubuntu systemctl を使用して Systemd を制御する正しい方法

最新の Linux PC でサービスまたはサービスのグループを管理することは、自分が何をしているのかわからない場合、面倒な場合があります。幸運なことに、Ubuntu Systemctl を使用すると、Linux PC でサービスを管理できます。

このチュートリアルでは、別の systemctl を実行して、Ubuntu PC で Systemd サービスを管理する方法を学習します。 コマンド。

準備?掘り下げる時が来ました!

前提条件

このチュートリアルは実践的なデモンストレーションですが、Ubuntu 16 以降のバージョンを使用している限り、特別なツールは必要ありません。このチュートリアルでは、デモ用に Ubuntu 20.04.3 LTS バージョンを使用します。

Ubuntu Systemctl とは?

Ubuntu の systemctl コマンドを実行する前に、まず Systemctl とは何かを理解してください。 Systemctl は、systemd およびシステム サービスを制御および管理するためのコマンドライン ユーティリティです。

簡単に言えば、Systemctl は、systemd init システムが Linux カーネルの起動後にコンポーネントを初期化するためのコントロール パネルまたはサービス マネージャーです。 Systemctl は、サービスの管理に使用できるライブラリ、デーモン、ユーティリティのコレクションです。

サービスを効果的に管理するには、次のようにさまざまなサービスの状態を把握してください。

  • 有効 – システムの起動時に開始するようにサービスが構成されていることを示します。
  • 無効 – システムの起動時にサービスが開始されないように構成されていることを示します。
  • アクティブ – サービスが現在実行中の状態であることを示します。
  • 非アクティブ – サービスは現在実行されていませんが、一部のアプリケーションがそのサービスを開始しようとすると開始される可能性があることを示します。

すべてのサービスの一覧表示

サービスのさまざまな状態がわかったので、おそらく、Ubuntu PC 上のすべてのサービスのリストを表示したいと思うでしょう。すべてのサービスを一覧表示すると、サービスを管理するための準備となるいくつかの情報が得られます。

ターミナルを開き、以下のコマンドを実行して、すべてのサービス ユニット (list-units) を一覧表示します。 ) (アクティブ、実行中、終了、または失敗) サービスをユニット タイプとして設定 (--type=service ).

systemctl list-units --type=service

このチュートリアルの後半で管理するサービスをリストから選択し、UNIT をメモします。 名前 (例:apache2 )。スペースバーを押して下にスクロールするか、「Q」キーを押してコマンドを終了します。

ところで、これは Linux シェル スクリプトに関する優れたガイドです。

特定の状態でサービスをリストする

すべてのサービスをリストする代わりに、サービスのリストを絞り込みたいと思うかもしれません。その場合、--state を追加します パラメータは、指定した特定の状態のサービスを除外するため、トリックを行います。

以下のコマンドのいずれかを実行して、すべてのアクティブなサービスを一覧表示します (--type=service --state=active )、実行中と終了の両方。

systemctl list-units --type=service --state=active

同様に、終了したサービスまたは実行中のサービスのみを一覧表示するには、状態の値を active から変更します。 running のいずれかに または exited 、以下のコマンドに示すように:

systemctl --type=service --state=running
systemctl --type=service --state=exited

有効なサービスの一覧表示

アクティブなサービス、実行中のサービス、および終了したサービスの一覧表示とは別に、grep をパイプライン処理することで、有効なサービスと無効なサービスを一覧表示することもできます。 コマンド。

以下のいずれかのコマンドを実行して一覧表示します (list-unit-files ) disabled または enabled サービス (--type=service ).

## Lists all Enabled services
systemctl list-unit-files --type=service | grep enabled
## Lists all Disabled services
systemctl list-unit-files --type=service | grep disabled

以下に示すように、有効になっているサービスをメモします。後でサービスを無効にするために必要になりますが、このチュートリアルでは acpid.service を使用します デモ用。 acpid は、Advanced Configuration and Power Interface (ACPI) イベントをサポートする拡張可能なデーモンです。

サービス プロパティの一覧表示

サービスの一覧表示とは別に、サービスのプロパティを確認したい場合があります。サービスのプロパティを把握することは、トラブルシューティング、プロセスのパラメーター、または再起動の動作に役立ちます。

以下のコマンドを show に実行します サービスの (acpid.service ) key=value 形式のプロパティ。

systemctl show acpid.service

特定のサービス プロパティのみを探している場合は、-p を渡すことができます。 プロパティ名のフラグ。

以下のコマンドを show に実行します サービスの (acpid.service ) MainPID 財産。

systemctl show acpid.service -p MainPID

特定のサービスの管理

サービスの一覧表示の基本は終わったので、次は systemctl stop を実行して特定の (単一の) サービスを管理します。 と start コマンド。

以下のデモでは Apache サービス (apache2) を使用していますが、「すべてのサービスのリスト」セクションでメモしたサービスを自由に管理できます。ただし、サービスを停止または開始する前に、まずサービスのステータスを確認する必要があります。

apache2 を表示するには、ターミナルで次のコマンドを実行します。 status などのサービスの詳細情報 .

systemctl status apache2

以下では、apache2 サービスがアクティブで実行中であることがわかります。

サービスの状態を変更していないため、サービスの状態を表示するために sudo パスワードを入力する必要はありません。ただし、サービスを開始、停止、または再起動する場合は、sudo コマンドを先頭に追加し、sudo パスワードを入力する必要があります。

サービスの停止

おそらく、ハングしたままバックグラウンドで実行されているサービスを停止したいと思うでしょう。その場合、systemctl stop コマンドが必要です。 systemctl を実行します 以下のコマンドで apache2 を停止します サービス。

sudo systemctl stop apache2

複数のサービスを同時に停止する場合は、次のように各サービスをスペースで区切って指定します:sudo systemctl stop sshd apache2 .このコマンドでは、sshd サービスと apache2 サービスの両方を一度に停止します。

systemctl status を実行します コマンドを実行して、apache2 サービスが停止したかどうかを確認します。

systemctl status apache2

apache2 サービスのステータスが inactive (dead) に変わったことを以下で確認できます。 、サービスが停止したことを示します。

サービスの開始

まったく実行されていないことに気付いた場合、サービスを開始するにはどうすればよいでしょうか? systemctl start であるサービスの停止に似たコマンドを実行します 指図。以下のコマンドを start に実行します apache2 サービス。

sudo systemctl start apache2

複数のサービスを停止する場合と同様に、1 行のコマンドで複数のサービスを開始することもできます。 stop を置き換えます start を使用したコマンド 次のようなコマンド:sudo systemctl start sshd apache2

systemctl status を実行します コマンドをもう一度実行して、apache2 かどうかを確認します。 サービスは実行中です。

systemctl status apache2

アクティブ(実行中) 以下に示すように、サービスがビジネスに戻ったので、すべての準備が整いました。

最初にサービスを停止せずにすぐにサービスを再起動したい場合。その場合は、systemctl restart を選択してください 代わりに、次のようにコマンドを実行します:sudo systemctl restart apache2

サービスの有効化または無効化

おそらく、システムの起動時に開始したい、または開始したくない特定のサービスがあるでしょう。その場合、systemctl を実行します enable または disable コマンドが最善の方法です。

enable disable サブコマンドを使用すると、システムのデフォルトの起動設定を構成できます。 サブコマンドは、システムの起動時にサービスが実行されないようにします。

systemctl を実行します 以下のコマンドを disable に サービス (acpid.service )「有効なサービスの一覧表示」セクションでメモしました。コマンドの実行を承認するには、sudo パスワードを入力してください。

sudo systemctl disable acpid.service

acpid.service が OS 主導の構成と電源管理 (OSPM) をサポートするようになったため。再度有効にする必要があります。サービスを有効にするコマンドは、サービスを無効にするのと似ています。

systemctl を実行 以下のコマンドを enableacpid.service .このコマンドは、サービスをシステムのデフォルトのスタートアップ設定に登録します。

sudo systemctl enable acpid.service

結論

このチュートリアルでは、Ubuntu systemctl を実行することで、サービスをすばやく停止、開始、または再起動できることを理解しました。 コマンド。 systemctl コマンドを使用すると、1 つだけでなく複数のサービスを同時に管理できます。

この新たに発見された知識を利用して、Ubuntu システムで制御サービスを自動化してみませんか?


Linux
  1. systemd サービスを定期的に再起動するように設定するにはどうすればよいですか?

  2. Systemd:After と Requires の両方を使用する

  3. systemd で OnFailure を使用する適切な方法

  1. systemdを使用してスタートアップを管理する

  2. systemctlコマンドを使用してsystemdユニットを管理する

  3. LinuxでSystemctlを使用してSystemdサービスを管理する方法

  1. Systemctlコマンドを使用してSystemdサービスを管理する方法

  2. LinuxでSystemdサービスを一覧表示する方法

  3. Systemctlを使用してサービスを管理する