Linuxサービス管理

LinuxLinuxBeginner
今すぐ練習

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

はじめに

Linuxサービス管理に関するこの実践的な実験(Lab)へようこそ。Linuxにおけるサービスは、ネットワーク接続、ロギング、印刷などの重要なシステム機能を処理するバックグラウンドプロセスです。これらのサービスを効率的に管理することは、Linux管理者にとって不可欠なスキルです。

この実験(Lab)では、ほとんどの最新のLinuxディストリビューションの標準的な初期化システムおよびサービスマネージャであるsystemdスイートの一部であるsystemctlコマンドの使い方を学びます。サービスの状態を確認し、サービスを起動および停止することで制御し、システム起動時のサービスの動作を設定する練習を行います。

この実験(Lab)の終了時には、Linuxサービス管理の基本を理解し、Linux環境でシステムサービスを効果的に制御できるようになります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/InputandOutputRedirectionGroup(["Input and Output Redirection"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/InputandOutputRedirectionGroup -.-> linux/redirect("I/O Redirecting") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") subgraph Lab Skills linux/echo -.-> lab-271377{{"Linuxサービス管理"}} linux/cat -.-> lab-271377{{"Linuxサービス管理"}} linux/redirect -.-> lab-271377{{"Linuxサービス管理"}} linux/service -.-> lab-271377{{"Linuxサービス管理"}} end

システムサービスの状態の理解と確認

このステップでは、systemctlコマンドを使用してシステムサービスの状態を確認する方法を学びます。サービスの状態を理解することは、効果的なサービス管理の第一歩です。

システムサービスとは何か?

システムサービス(またはデーモン)は、さまざまなシステムタスクを実行するためにバックグラウンドで実行されるプログラムです。通常、これらはシステム起動時に起動し、システムがシャットダウンされるまで実行され続けます。例としては、ウェブサーバー、データベースサーバー、SSHサーバー、印刷サービスなどがあります。

サービスの状態を確認する

まず、Linuxシステムへのリモートアクセスに一般的に使用されるSSHサービス(sshd)の状態を確認しましょう。

  1. LabEx VM環境でターミナルを開きます。すでにデフォルトのディレクトリ /home/labex/project にいるはずです。

  2. 以下のコマンドを実行して、SSHサービスの状態を確認します。

    systemctl status sshd

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

    ● ssh.service - OpenBSD Secure Shell server
      Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
      Active: active (running) since Wed 2023-10-25 08:15:00 UTC; 1h 30min ago
        Docs: man:sshd(8)
              man:sshd_config(5)
     Process: 1234 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
    Main PID: 1235 (sshd)
       Tasks: 1 (limit: 4915)
      Memory: 5.6M
         CPU: 500ms
      CGroup: /system.slice/ssh.service
              └─1235 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

    この出力には、サービスに関する重要な情報が含まれています。

    • Loaded:サービスがロードされているか、および起動時に自動で起動するように設定されているかを示します。
    • Active:サービスが現在実行中かどうかを示します。
    • Process/Main PID:サービスのプロセスIDを表示します。
    • Memory/CPU:リソースの使用状況を示します。
    • Logs:サービスに関連する最近のログエントリです。
  3. 別のサービスの状態を確認する必要がある場合は、sshdをそのサービスの名前に置き換えることができます。たとえば、Apacheウェブサーバー(インストールされている場合)の状態を確認するには、次のようにします。

    systemctl status apache2

すべてのサービスをリストする

次のコマンドを使用して、システム上のすべてのサービスをリストすることができます。

  1. すべてのアクティブなサービスをリストするには、次のコマンドを実行します。

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

    このコマンドは、システム上で現在アクティブなすべてのサービスを表示します。

  2. サービスの状態に関係なくすべてのサービスをリストするには、次のコマンドを実行します。

    systemctl list-units --type=service --all

サービスリストファイルを作成する

では、システム上で実行中のすべてのサービスのリストを保存するファイルを作成しましょう。

  1. 現在のディレクトリに services_list.txt という名前のファイルを作成するには、次のコマンドを実行します。

    systemctl list-units --type=service --state=running > ~/project/services_list.txt

    このコマンドは、systemctl list-units を実行し、その出力をプロジェクトディレクトリ内の services_list.txt という名前のファイルにリダイレクトします。

  2. ファイルが作成され、データが含まれていることを確認します。

    cat ~/project/services_list.txt

    システム上で実行中のすべてのサービスのリストが表示されるはずです。

このステップでは、サービスの状態を確認する方法と、システム上で実行中のすべてのサービスのリストを作成する方法を学びました。この情報は、どのサービスがアクティブで、どのように構成されているかを理解するために役立ちます。

システムサービスの制御:起動、停止、再起動

このステップでは、システムサービスの起動、停止、再起動の方法を学びます。これらの操作は、サービスのメンテナンス、トラブルシューティング、および設定変更の適用に不可欠です。

サービスの起動と停止

SSHサービスの制御を練習してみましょう。

  1. まず、SSHサービスの現在の状態を確認します。

    systemctl status sshd

    サービスが現在アクティブか非アクティブかを確認してください。

  2. 次に、SSHサービスを停止します。

    sudo systemctl stop sshd

    このコマンドはサービスを即座に停止します。成功すると、このコマンドからは出力がありません。

  3. サービスが停止したことを確認します。

    systemctl status sshd

    出力には、サービスが「inactive (dead)」と表示されるはずです。

    ● ssh.service - OpenBSD Secure Shell server
      Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
      Active: inactive (dead) since Wed 2023-10-25 10:15:00 UTC; 5s ago
  4. サービスを再度起動します。

    sudo systemctl start sshd
  5. サービスが起動したことを確認します。

    systemctl status sshd

    出力には、サービスが再び「active (running)」と表示されるはずです。

サービスの再起動

サービスの再起動は、特に設定を変更した後によく行われる操作です。

  1. SSHサービスを再起動するには、次のコマンドを実行します。

    sudo systemctl restart sshd

    このコマンドはサービスを停止してから再起動します。

  2. 再起動を確認するには、サービスの状態を確認します。

    systemctl status sshd

    「Active」の行を見て、サービスが最後に起動された時刻を確認してください。

サービス制御コマンドの参照ファイルを作成する

学んだコマンドを含む参照ファイルを作成しましょう。

  1. プロジェクトディレクトリに service_control.txt という名前のファイルを作成します。

    echo "Service Control Commands:" > ~/project/service_control.txt
    echo "Start a service: sudo systemctl start <service_name>" >> ~/project/service_control.txt
    echo "Stop a service: sudo systemctl stop <service_name>" >> ~/project/service_control.txt
    echo "Restart a service: sudo systemctl restart <service_name>" >> ~/project/service_control.txt
  2. ファイルの内容を確認します。

    cat ~/project/service_control.txt

このステップでは、サービスの起動、停止、再起動による制御方法を学びました。これらの操作は、Linuxシステムにおけるサービス管理とメンテナンスの基本です。

サービスの起動動作の管理:有効化と無効化

このステップでは、システム起動時にサービスが自動的に起動するかどうかを設定する方法を学びます。これは、システム再起動後に必要なサービスが手動介入なしで利用可能になるようにするために重要です。

サービスの起動設定の理解

サービスは、起動時に自動的に起動するように設定(有効化)することも、手動で起動する必要があるように設定(無効化)することもできます。この設定は、サービスの現在の実行状態とは別のものです。

サービスが有効化されているか確認する

  1. SSHサービスが起動時に自動的に起動するように設定されているかを確認するには、次のコマンドを実行します。

    systemctl is-enabled sshd

    出力は「enabled」(起動時に自動起動)または「disabled」(起動時に自動起動しない)のいずれかになります。

サービスを無効化する

サービスを無効化すると、起動時に自動的に起動しないように設定されます。

  1. SSHサービスを無効化します。

    sudo systemctl disable sshd

    シンボリックリンクが削除されたことを示すメッセージが表示されるはずです。

    Removed /etc/systemd/system/multi-user.target.wants/ssh.service.
  2. サービスが現在無効化されていることを確認します。

    systemctl is-enabled sshd

    出力は「disabled」になるはずです。

  3. サービスを無効化しても、現在実行中の場合は停止しません。現在の状態を確認します。

    systemctl status sshd

    次回の起動時にサービスが無効化されていても、現在はまだアクティブな場合があります。

サービスを有効化する

サービスを有効化すると、起動時に自動的に起動するように設定されます。

  1. SSHサービスを再度有効化します。

    sudo systemctl enable sshd

    シンボリックリンクが作成されたことを示すメッセージが表示されるはずです。

    Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.service.
  2. サービスが現在有効化されていることを確認します。

    systemctl is-enabled sshd

    出力は「enabled」になるはずです。

複合コマンド

有効化/無効化と起動/停止を1つのコマンドで行うこともできます。

  1. サービスを無効化して停止するには、次のコマンドを実行します。

    sudo systemctl disable --now sshd
  2. サービスを有効化して起動するには、次のコマンドを実行します。

    sudo systemctl enable --now sshd

サービスの起動設定の参照ファイルを作成する

学んだコマンドを含む参照ファイルを作成しましょう。

  1. プロジェクトディレクトリに service_boot.txt という名前のファイルを作成します。

    echo "Service Boot Configuration Commands:" > ~/project/service_boot.txt
    echo "Check if a service is enabled: systemctl is-enabled <service_name>" >> ~/project/service_boot.txt
    echo "Enable a service to start at boot: sudo systemctl enable <service_name>" >> ~/project/service_boot.txt
    echo "Disable a service from starting at boot: sudo systemctl disable <service_name>" >> ~/project/service_boot.txt
    echo "Enable and immediately start a service: sudo systemctl enable --now <service_name>" >> ~/project/service_boot.txt
    echo "Disable and immediately stop a service: sudo systemctl disable --now <service_name>" >> ~/project/service_boot.txt
  2. ファイルの内容を確認します。

    cat ~/project/service_boot.txt

このステップでは、サービスの有効化と無効化によってサービスの起動動作を管理する方法を学びました。これは、システム起動時に自動的に起動するサービスを設定するために重要であり、必要なサービスが利用可能になり、不要なサービスがリソースを消費しないようにすることができます。

まとめ

この実験では、systemctl コマンドを使用したLinuxサービス管理の基本を学びました。すべてのLinux管理者が知っておくべき重要なスキルを練習しました。

  1. サービスの状態を確認する:サービスの現在の状態を表示する方法を学びました。これは、監視とトラブルシューティングに不可欠です。

  2. サービスを制御する:サービスの起動、停止、再起動を練習しました。これらは、メンテナンスと設定変更に必要な基本的な操作です。

  3. 起動動作を管理する:システム起動時にサービスを有効化または無効化する方法を学びました。これにより、再起動後に自動的に実行されるサービスを制御できます。

これらのスキルは、Linux環境における効果的なサービス管理の基礎を提供します。Linuxシステムを引き続き使用するうちに、これらのコマンドがシステムの安定性とパフォーマンスを維持するために不可欠であることがわかるでしょう。

適切なサービス管理は、システムのセキュリティ、リソースの最適化、および必要な機能が必要なときに利用可能であることを保証するために重要であることを忘れないでください。この実験で得た知識は、より高度なLinux管理タスクの土台となります。