はじめに
この実験では、Linux で systemd ユニットの状態を確認する方法を学びます。systemctl is-enabled コマンドを使用して、ユニットが起動時に自動的に起動するように設定されているかどうかを判断し、systemctl list-units コマンドを使用してアクティブなユニットを一覧表示します。最後に、/etc/systemd ディレクトリ内の systemd ユニットファイルの場所を調べます。この実験では、サービスの管理と systemd 初期化プロセスの理解に必要な基本的なスキルを身につけることができます。
systemctl is-enabled でユニットの状態を確認する
このステップでは、systemctl is-enabled コマンドを使用して systemd ユニットの状態を確認する方法を学びます。
Systemd は Linux 用のシステムおよびサービスマネージャです。初期の起動プロセスの後にプロセスを管理します。systemd の「ユニット」とは、サービス、デバイス、マウントポイント、またはその他のシステムリソースをどのように扱うかを記述した設定ファイルを指します。
systemctl is-enabled コマンドは、ユニットが起動時に自動的に起動するように設定されているかどうかを確認します。これは、システム起動時に実行したいサービスにとって重要です。
ssh サービスの状態を確認してみましょう。SSH (Secure Shell) サービスを使用すると、サーバーにリモートで接続できます。
ターミナルが開いていない場合は開きます。デスクトップの左側にある Xfce Terminal アイコンを見つけることができます。
次のコマンドを入力して Enter キーを押します。
systemctl is-enabled ssh
次のような出力が表示されるはずです。
enabled
この出力は、ssh サービスがシステム起動時に自動的に起動するように設定されていることを示しています。
次に、デフォルトで有効になっていない可能性のあるサービス、たとえば apache2 (ウェブサーバー) の状態を確認してみましょう。
次のコマンドを入力して Enter キーを押します。
systemctl is-enabled apache2
次のような出力が表示されるかもしれません。
disabled
これは、apache2 サービスが起動時に自動的に起動するように設定されていないことを意味します。
サービスが有効か無効かを理解することは、システムを管理し、再起動後に必要なサービスが実行されることを確認するために重要です。
覚えておいてください、systemctl is-enabled コマンドはサービスが起動時に起動するように設定されているかどうかを示すだけで、現在実行中かどうかは示しません。サービスが実行中かどうかを確認する方法は、後のステップで学びます。
Continue をクリックして次のステップに進みます。
systemctl list-units でユニットを一覧表示する
このステップでは、systemctl list-units コマンドを使用してアクティブな systemd ユニットを一覧表示する方法を学びます。
systemctl is-enabled はユニットが起動時に起動するように設定されているかどうかを示しますが、systemctl list-units は現在システムのメモリに読み込まれてアクティブなユニットを表示します。これは、現在 systemd によって管理されているサービス、デバイス、その他のリソースを確認するのに便利です。
ターミナルが開いていない場合は開きます。
次のコマンドを入力して Enter キーを押します。
systemctl list-units
長いユニットのリストが表示されます。出力には通常、以下のような列が含まれます。
UNIT: ユニットの名前。LOAD: ユニットの設定がメモリに読み込まれているかどうか。ACTIVE: ユニットの高レベルなアクティベーション状態 (例:active,inactive,failed)。SUB: ユニットの低レベルなアクティベーション状態 (例:running,exited,waiting)。DESCRIPTION: ユニットの簡単な説明。
リストはかなり長くなることがあります。管理しやすくするために、出力をフィルタリングすることができます。たとえば、サービスユニット (.service で終わるユニット) のみを表示するには、次のように使用できます。
systemctl list-units --type service
このコマンドは、現在アクティブなすべてのサービスのリストを表示します。
また、grep を使用して出力内の特定のユニットを検索することもできます。たとえば、ssh サービスを見つけるには、次のようにします。
systemctl list-units | grep ssh
これは、ssh.service ユニットがアクティブな場合、それに対応する行を表示します。
systemctl list-units コマンドは、システムの現在の状態と systemd によって管理されているプロセスを理解するための強力なツールです。さまざまなオプションと grep を試して、必要な情報を見つけてください。
Continue をクリックして次のステップに進みます。
/etc/systemd 内のユニットファイルを調査する
このステップでは、systemd がユニットの設定ファイルをどこに保存しているか、およびその内容をどのように表示するかを調べます。
サービスやその他のリソースの管理方法を定義する systemd ユニットファイルは、通常 /etc/systemd/system/ ディレクトリにあります。このディレクトリには、システム管理者またはパッケージによってインストールされたユニットファイルが含まれています。
このディレクトリに移動して、その内容を一覧表示してみましょう。
ターミナルが開いていない場合は開きます。
まず、cd コマンドを使用して現在のディレクトリを /etc/systemd/system/ に変更します。
cd /etc/systemd/system/
次に、ls コマンドを使用してこのディレクトリ内のファイルを一覧表示します。
ls
.service、.target などのユニットファイルのリストが表示されます。これらのファイルには、systemd が各ユニットをどのように扱うかに関する指示が含まれています。
cat コマンドを使用して ssh.service ファイルの内容を調査してみましょう。現在 /etc/systemd/system/ ディレクトリにいるので、ファイル名で直接参照することができます。
cat ssh.service
ssh.service ファイルの内容が表示されます。このファイルは、systemd に SSH サービスの起動、停止、管理方法を指示するさまざまなセクションとディレクティブが記載されたテキストファイルです。
たとえば、[Unit]、[Service]、[Install] のようなセクションがあるかもしれません。
[Unit]セクションには、ユニットに関する一般的な情報とその依存関係が含まれています。[Service]セクションでは、サービスを起動および停止するために実行するコマンドが定義されています。[Install]セクションには、ユニットをどのようにインストールして有効にするかに関する情報が含まれています。
これらのユニットファイルの構造と内容を理解することは、systemd を使用した高度なシステム管理の鍵となります。詳細は複雑になることがありますが、どこで見つけるかと表示方法を知るだけでも大きな一歩です。
大きなファイルの場合、cat の代わりに less を使用してファイル内容をページ単位で表示することができます。
less ssh.service
q を押して less を終了します。
Continue をクリックしてこの実験を完了します。
まとめ
この実験では、systemctl is-enabled コマンドを使用して、systemd ユニットが起動時に自動的に起動するように有効になっているかどうかを確認する方法を学びました。ssh および apache2 サービスの状態を確認することでこれを実践し、「enabled」はユニットが起動時に起動することを意味し、「disabled」は起動しないことを意味することを理解しました。
また、systemctl list-units コマンドを使用してアクティブな systemd ユニットを一覧表示する方法も学びました。このコマンドは、システム上で現在実行中または読み込まれているユニットの全体像を提供します。最後に、/etc/systemd ディレクトリにある systemd ユニットの設定ファイルを調査する方法を探り、ユニットがどのように定義され構成されているかを理解しました。



