Linux でサービスがアクティブかどうかを確認する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux システム上で実行中のサービスの状態を確認する方法を学びます。まずは、最新の systemctl status コマンドから始め、その出力と重要性を理解します。これは、直接実行が制限された環境でも役立ちます。

その後、古いが依然として有効な service コマンドを使ってサービスの状態を確認する方法を学び、最後に ps aux コマンドを使ってサービスに関連する実行中のプロセスを確認します。この実践的な経験を通じて、Linux でのサービスの監視と管理に必要な基本的なスキルを身につけることができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") subgraph Lab Skills linux/echo -.-> lab-558679{{"Linux でサービスがアクティブかどうかを確認する方法"}} linux/grep -.-> lab-558679{{"Linux でサービスがアクティブかどうかを確認する方法"}} linux/ps -.-> lab-558679{{"Linux でサービスがアクティブかどうかを確認する方法"}} linux/service -.-> lab-558679{{"Linux でサービスがアクティブかどうかを確認する方法"}} end

systemctl status を使用してサービスの状態を確認する

このステップでは、systemctl コマンドを使用してシステムサービスの状態を確認する方法を学びます。サービスは、Web サーバー、データベースサーバー、またはネットワーキングデーモンなど、システム上で実行されるバックグラウンドプログラムです。

この特定の LabEx 環境では、Docker コンテナ内で実行されているため、直接 systemctl を使用することはできませんが、実際の Linux システムでサービスを管理するためには、その動作原理を理解することが重要です。ここではその概念をシミュレートし、一般的なコマンドの使い方を紹介します。

systemd を使用する標準的な Linux システム(Ubuntu などの最新のディストリビューションで一般的)では、systemctl status の後にサービス名を指定することで、サービスが実行中、アクティブ、または失敗しているかどうかを確認できます。

たとえば、安全なリモートログインを処理する ssh サービスの状態を確認するには、通常次のコマンドを実行します。

systemctl status ssh

出力は次のようになります(正確な詳細は異なる場合があります)。

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since ...
       Docs: man:sshd(8)
             man:ssh(1)
   Main PID: ... (sshd)
      Tasks: ... (limit: ...)
     Memory: ...
        CPU: ...
     CGroup: /system.slice/ssh.service
             └─... /usr/sbin/sshd -D

...

出力で注目すべき重要な項目は次のとおりです。

  • Loaded: サービスの設定が正しく読み込まれたかを示します。
  • Active: サービスの現在の状態を示します(例:active (running)inactive (dead)failed)。
  • Main PID: サービスのメインプロセスのプロセス ID です。

ここでは systemctl を実行できませんが、他の Linux システムでサービスを管理するためには、このコマンドを知っておくことが重要です。

サービスの状態を確認することとコマンドの実行を練習するために、echo を使用して、systemctl status について学んだことを示すメッセージを表示しましょう。

ターミナルに次のコマンドを入力します。

echo "Learned about systemctl status"

Enter キーを押します。

このコマンドは、systemctl status の使用概念を読み理解したことを確認するだけのものです。

続ける をクリックして次に進みます。

service コマンドの出力でサービスを確認する

このステップでは、サービスを管理するために使用される別のコマンドである service コマンドについて学びます。このコマンドは、systemd を使用していないシステムや、古い init システムとの互換性のためによく使用されます。

service コマンドは、サービスの起動、停止、再起動、および状態の確認を行うためのシンプルなインターフェースを提供します。

service コマンドを使用してサービスの状態を確認する基本的な構文は次のとおりです。

service <service-name> status

systemctl と同様に、<service-name> を確認したいサービスの実際の名前に置き換えます。

たとえば、apache2 Web サーバーがインストールされ、service コマンドで管理されているシステムでは、次のようにしてその状態を確認します。

service apache2 status

出力は通常、サービスが実行中かどうかを示します。

再び、この LabEx 環境はコンテナ化されているため、このコマンドを直接実行することはできませんが、service コマンドを理解することは、さまざまな Linux システムで作業する上で有益です。

service コマンドについて学んだことを確認するために、echo コマンドを使用して確認メッセージを表示します。

ターミナルに次のコマンドを入力します。

echo "Understood service command"

Enter キーを押します。

この操作は、このステップを完了し、service コマンドについて学んだことを示すマーカーとして機能します。

続ける をクリックして次のステップに進みます。

ps aux で実行中のサービスプロセスを確認する

このステップでは、ps aux コマンドを使用してサービスに関連するプロセスを探すことで、サービスが実行中かどうかを確認する方法を学びます。これは、システム上で現在実行されているプログラムを確認する基本的な方法です。

ps コマンドは、現在のプロセスのスナップショットを報告します。aux オプションは、通常、すべてのユーザーのプロセスを表示するために使用されます(a)。これには端末に接続されていないプロセスも含まれます(x)。また、ユーザーにやさしい形式で詳細情報を表示します(u)。

サービスが実行中の場合、通常は 1 つ以上のプロセスが関連付けられています。ps aux を使用し、その出力を grep にパイプすることで、特定のサービスに関連するプロセスをフィルタリングできます。

たとえば、ssh サービスに関連するプロセスがあるかどうかを確認するには、次のコマンドを使用します。

ps aux | grep ssh

これを LabEx 環境で試してみましょう。ターミナル自体が実行中のプロセスであることがわかっています。ps aux を使用して、zsh シェルのプロセスを見つけましょう。

ターミナルに次のコマンドを入力します。

ps aux | grep zsh

Enter キーを押します。

次のような出力が表示されるはずです。

labex       ...  ...  ...  ... ?        Ss   ... ...:.. /usr/bin/zsh
labex       ...  ...  ...  ... ?        S+   ... ...:.. grep --color=auto zsh

最初の行は zsh プロセス(ターミナルシェル)を示し、2 番目の行は実行したばかりの grep コマンド(これもプロセスです!)を示しています。

この方法(ps aux | grep <service-name>)は、systemctlservice コマンドが利用できない場合や十分な詳細を提供しない場合に、サービスが実際に実行中かどうかをアクティブなプロセスを確認することで確認する強力な方法です。

このステップを完了するには、echo を使用して、ps auxgrep を使用する練習を行ったことを確認します。

次のコマンドを入力します。

echo "Practiced ps aux with grep"

Enter キーを押します。

続ける をクリックして実験を終了します。

まとめ

この実験では、さまざまな方法を使って Linux のサービスの状態を確認する方法を学びました。systemd を使用する最新の Linux システムでサービスの状態を確認する標準的な方法である systemctl status コマンドを紹介しました。ただし、実験環境のため直接実行はシミュレートされました。また、古い service コマンドを使ってサービスの状態を確認する方法や、ps aux でプロセスリストを調べることで実行中のサービスプロセスを確認する方法も学びました。これらの手順は、特定のサービスが Linux システム上でアクティブかつ実行中かどうかを判断する包括的なアプローチを提供します。