はじめに
Linux サービス管理に関するこの実践的な実験(Lab)へようこそ。Linux におけるサービスは、ネットワーク接続、ロギング、印刷などの重要なシステム機能を処理するバックグラウンドプロセスです。これらのサービスを効率的に管理することは、Linux 管理者にとって不可欠なスキルです。
この実験(Lab)では、ほとんどの最新の Linux ディストリビューションの標準的な初期化システムおよびサービスマネージャであるsystemdスイートの一部であるsystemctlコマンドの使い方を学びます。サービスの状態を確認し、サービスを起動および停止することで制御し、システム起動時のサービスの動作を設定する練習を行います。
この実験(Lab)の終了時には、Linux サービス管理の基本を理解し、Linux 環境でシステムサービスを効果的に制御できるようになります。
システムサービスの状態の理解と確認
このステップでは、systemctlコマンドを使用してシステムサービスの状態を確認する方法を学びます。サービスの状態を理解することは、効果的なサービス管理の第一歩です。
システムサービスとは何か?
システムサービス(またはデーモン)は、さまざまなシステムタスクを実行するためにバックグラウンドで実行されるプログラムです。通常、これらはシステム起動時に起動し、システムがシャットダウンされるまで実行され続けます。例としては、ウェブサーバー、データベースサーバー、SSH サーバー、印刷サービスなどがあります。
サービスの状態を確認する
まず、Linux システムへのリモートアクセスに一般的に使用される SSH サービス(sshd)の状態を確認しましょう。
LabEx VM 環境でターミナルを開きます。すでにデフォルトのディレクトリ
/home/labex/projectにいるはずです。以下のコマンドを実行して、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:サービスに関連する最近のログエントリです。
別のサービスの状態を確認する必要がある場合は、
sshdをそのサービスの名前に置き換えることができます。たとえば、Apache ウェブサーバー(インストールされている場合)の状態を確認するには、次のようにします。systemctl status apache2
すべてのサービスをリストする
次のコマンドを使用して、システム上のすべてのサービスをリストすることができます。
すべてのアクティブなサービスをリストするには、次のコマンドを実行します。
systemctl list-units --type=service --state=activeこのコマンドは、システム上で現在アクティブなすべてのサービスを表示します。
サービスの状態に関係なくすべてのサービスをリストするには、次のコマンドを実行します。
systemctl list-units --type=service --all
サービスリストファイルを作成する
では、システム上で実行中のすべてのサービスのリストを保存するファイルを作成しましょう。
現在のディレクトリに
services_list.txtという名前のファイルを作成するには、次のコマンドを実行します。systemctl list-units --type=service --state=running > ~/project/services_list.txtこのコマンドは、
systemctl list-unitsを実行し、その出力をプロジェクトディレクトリ内のservices_list.txtという名前のファイルにリダイレクトします。ファイルが作成され、データが含まれていることを確認します。
cat ~/project/services_list.txtシステム上で実行中のすべてのサービスのリストが表示されるはずです。
このステップでは、サービスの状態を確認する方法と、システム上で実行中のすべてのサービスのリストを作成する方法を学びました。この情報は、どのサービスがアクティブで、どのように構成されているかを理解するために役立ちます。
システムサービスの制御:起動、停止、再起動
このステップでは、システムサービスの起動、停止、再起動の方法を学びます。これらの操作は、サービスのメンテナンス、トラブルシューティング、および設定変更の適用に不可欠です。
サービスの起動と停止
SSH サービスの制御を練習してみましょう。
まず、SSH サービスの現在の状態を確認します。
systemctl status sshdサービスが現在アクティブか非アクティブかを確認してください。
次に、SSH サービスを停止します。
sudo systemctl stop sshdこのコマンドはサービスを即座に停止します。成功すると、このコマンドからは出力がありません。
サービスが停止したことを確認します。
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サービスを再度起動します。
sudo systemctl start sshdサービスが起動したことを確認します。
systemctl status sshd出力には、サービスが再び「active (running)」と表示されるはずです。
サービスの再起動
サービスの再起動は、特に設定を変更した後によく行われる操作です。
SSH サービスを再起動するには、次のコマンドを実行します。
sudo systemctl restart sshdこのコマンドはサービスを停止してから再起動します。
再起動を確認するには、サービスの状態を確認します。
systemctl status sshd「Active」の行を見て、サービスが最後に起動された時刻を確認してください。
サービス制御コマンドの参照ファイルを作成する
学んだコマンドを含む参照ファイルを作成しましょう。
プロジェクトディレクトリに
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ファイルの内容を確認します。
cat ~/project/service_control.txt
このステップでは、サービスの起動、停止、再起動による制御方法を学びました。これらの操作は、Linux システムにおけるサービス管理とメンテナンスの基本です。
サービスの起動動作の管理:有効化と無効化
このステップでは、システム起動時にサービスが自動的に起動するかどうかを設定する方法を学びます。これは、システム再起動後に必要なサービスが手動介入なしで利用可能になるようにするために重要です。
サービスの起動設定の理解
サービスは、起動時に自動的に起動するように設定(有効化)することも、手動で起動する必要があるように設定(無効化)することもできます。この設定は、サービスの現在の実行状態とは別のものです。
サービスが有効化されているか確認する
SSH サービスが起動時に自動的に起動するように設定されているかを確認するには、次のコマンドを実行します。
systemctl is-enabled sshd出力は「enabled」(起動時に自動起動)または「disabled」(起動時に自動起動しない)のいずれかになります。
サービスを無効化する
サービスを無効化すると、起動時に自動的に起動しないように設定されます。
SSH サービスを無効化します。
sudo systemctl disable sshdシンボリックリンクが削除されたことを示すメッセージが表示されるはずです。
Removed /etc/systemd/system/multi-user.target.wants/ssh.service.サービスが現在無効化されていることを確認します。
systemctl is-enabled sshd出力は「disabled」になるはずです。
サービスを無効化しても、現在実行中の場合は停止しません。現在の状態を確認します。
systemctl status sshd次回の起動時にサービスが無効化されていても、現在はまだアクティブな場合があります。
サービスを有効化する
サービスを有効化すると、起動時に自動的に起動するように設定されます。
SSH サービスを再度有効化します。
sudo systemctl enable sshdシンボリックリンクが作成されたことを示すメッセージが表示されるはずです。
Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.service.サービスが現在有効化されていることを確認します。
systemctl is-enabled sshd出力は「enabled」になるはずです。
複合コマンド
有効化/無効化と起動/停止を 1 つのコマンドで行うこともできます。
サービスを無効化して停止するには、次のコマンドを実行します。
sudo systemctl disable --now sshdサービスを有効化して起動するには、次のコマンドを実行します。
sudo systemctl enable --now sshd
サービスの起動設定の参照ファイルを作成する
学んだコマンドを含む参照ファイルを作成しましょう。
プロジェクトディレクトリに
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ファイルの内容を確認します。
cat ~/project/service_boot.txt
このステップでは、サービスの有効化と無効化によってサービスの起動動作を管理する方法を学びました。これは、システム起動時に自動的に起動するサービスを設定するために重要であり、必要なサービスが利用可能になり、不要なサービスがリソースを消費しないようにすることができます。
まとめ
この実験では、systemctl コマンドを使用した Linux サービス管理の基本を学びました。すべての Linux 管理者が知っておくべき重要なスキルを練習しました。
サービスの状態を確認する:サービスの現在の状態を表示する方法を学びました。これは、監視とトラブルシューティングに不可欠です。
サービスを制御する:サービスの起動、停止、再起動を練習しました。これらは、メンテナンスと設定変更に必要な基本的な操作です。
起動動作を管理する:システム起動時にサービスを有効化または無効化する方法を学びました。これにより、再起動後に自動的に実行されるサービスを制御できます。
これらのスキルは、Linux 環境における効果的なサービス管理の基礎を提供します。Linux システムを引き続き使用するうちに、これらのコマンドがシステムの安定性とパフォーマンスを維持するために不可欠であることがわかるでしょう。
適切なサービス管理は、システムのセキュリティ、リソースの最適化、および必要な機能が必要なときに利用可能であることを保証するために重要であることを忘れないでください。この実験で得た知識は、より高度な Linux 管理タスクの土台となります。



