10.2. systemctl によるシステムサービス管理
システム管理者は、systemctl
ユーティリティーを使用してシステムサービスを管理できます。実行中のサービスの起動、停止、再起動、ブート時に起動するサービスの有効化と無効化、利用可能なサービスのリスト表示、システムサービスのステータスの表示など、さまざまなタスクを実行できます。
10.2.1. システムサービスのリスト表示 リンクのコピーリンクがクリップボードにコピーされました!
現在ロードされているすべてのサービスユニットをリストし、使用可能なすべてのサービスユニットのステータスを表示できます。
手順
systemctl
コマンドを使用して、次のタスクのいずれかを実行します。
現在ロードされているすべてのサービスユニットをリストします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、
systemctl list-units
コマンドは、アクティブなユニットのみを表示します。このコマンドは、サービスユニットファイルごとに、次のパラメーターの概要を提供します。UNIT
- サービスユニットのフルネーム
LOAD
- 設定ファイルのロード状態
ACTIVE
またはSUB
- 現在の高レベルおよび低レベルのユニットファイルのアクティベーション状態
DESCRIPTION
- ユニットの目的と機能の簡単な説明
--all
または-a
コマンドラインオプションを指定して次のコマンドを使用し、ロードされたすべてのユニットを状態に関係なく をリスト表示します。systemctl list-units --type service --all
$ systemctl list-units --type service --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 利用可能なすべてのサービスユニットのステータス (enabled または disabled) をリスト表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドでは、サービスユニットごとに以下を表示します。
UNIT FILE
- サービスユニットのフルネーム
STATE
- サービスユニットがブート時に自動的に起動するかどうかの情報
10.2.2. システムサービスステータスの表示 リンクのコピーリンクがクリップボードにコピーされました!
サービスユニットを検査して詳細情報を取得し、サービスの状態 (ブート時の起動が有効かどうか、現在実行中かどうか) を確認できます。特定のサービスユニットの前または後に起動するように指定されたサービスを表示することもできます。
手順
システムサービスに対応するサービスユニットに関する詳細情報を表示します。
systemctl status <name>.service
$ systemctl status <name>.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <name>
は、確認するサービスユニットの名前 (gdm
など) に置き換えます。このコマンドでは、以下の情報が表示されます。
- 選択したサービスユニットの名前とその後に続く簡単な説明
- 利用可能なサービスユニットの情報 で説明されている 1 つ以上のフィールド
-
サービスユニットの実行: ユニットが
root
ユーザーによって実行される場合 最新のログエントリー
Expand 表10.2 利用可能なサービスユニットの情報 フィールド 説明 Loaded
サービスユニットがロードされているかどうかの説明、ユニットファイルへの絶対パス、およびブート時のユニット起動が有効かどうかの注記。
Active
サービスユニットが実行中かどうかの説明と、タイムスタンプ
Main PID
プロセス ID と、対応するシステムサービスの名前。
ステータス
対応するシステムサービスに関する追加情報
Process
関連プロセスに関する追加情報
CGroup
関連するコントロールグループ (
cgroups
) に関する追加情報。
特定のサービスユニットが実行中であることを確認します。
systemctl is-active <name>.service
$ systemctl is-active <name>.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 特定のサービスユニットのブート時起動が有効かどうかを確認します。
systemctl is-enabled <name>.service
$ systemctl is-enabled <name>.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記systemctl is-active
およびsystemctl is-enabled
コマンドは、指定したサービスユニットが実行中または有効な場合に、終了ステータス0
を返します。指定したサービスユニットの前に
systemd
がどのサービスの起動を指示するかを確認します。systemctl list-dependencies --after <name>.service
# systemctl list-dependencies --after <name>.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、
gdm
の前に起動するサービスのリストを表示するには、次のように入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指定したサービスユニットの後に
systemd
がどのサービスの起動を指示するかを確認します。systemctl list-dependencies --before <name>.service
# systemctl list-dependencies --before <name>.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、
gdm
の後に起動するようにsystemd
が指示するサービスのリストを表示するには、次のように入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.3. systemd ユニットの起動と停止 リンクのコピーリンクがクリップボードにコピーされました!
systemctl start
コマンドを使用すると、現在のセッションでシステムサービスを起動できます。
前提条件
- Root アクセス権がある。
手順
現在のセッションでシステムサービスを起動します。
*systemctl start <systemd_unit> *
# *systemctl start <systemd_unit> *
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <systemd_unit>
は、起動するサービスユニットの名前 (例:httpd.service
) に置き換えます。注記systemd
には、サービス間で正と負の依存関係が存在します。特定のサービスを起動するとき、別のサービスを 1 つまたは複数開始 (正の依存関係)、あるいはサービスを 1 つまたは複数停止 (負の依存関係) することが必要となる場合があります。新しいサービスの起動を試みると、ユーザーに明示的な通知なしに、
systemd
がすべての依存関係を自動的に解決します。つまり、サービスを実行していて、負の依存関係にある別のサービスを起動しようとすると、最初のサービスが自動的に停止します。たとえば、
sendmail
サービスを実行しているときにpostfix
サービスを起動しようとすると、systemd
はまずsendmail
を自動的に停止します。これら 2 つのサービスは、競合しており、同じポートで実行できないためです。
10.2.4. システムサービスの停止 リンクのコピーリンクがクリップボードにコピーされました!
現在のセッションでシステムサービスを停止する場合は、systemctl stop
コマンドを使用します。
前提条件
- Root アクセス
手順
システムサービスを停止します。
systemctl stop <name>.service
# systemctl stop <name>.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <name>
は、停止するサービスユニットの名前 (bluetooth
など) に置き換えます。
10.2.5. システムサービスの再起動と再ロード リンクのコピーリンクがクリップボードにコピーされました!
restart
コマンドを使用して次のアクションを実行すると、現在のセッションでシステムサービスを再起動できます。
- 現在のセッションで選択したサービスユニットを停止し、すぐに再起動する。
- 対応するサービスがすでに実行中の場合にのみ、サービスユニットを再起動する。
- システムサービスの実行を中断せずに、システムサービスの設定を再ロードする。
前提条件
- Root アクセス権がある。
手順
システムサービスを再起動します。
systemctl restart <name>.service
# systemctl restart <name>.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <name>
は、再起動するサービスユニットの名前 (httpd
など) に置き換えます。選択したサービスユニットが実行中でない場合は、このコマンドによってサービスユニットが起動されます。
対応するサービスがすでに実行中の場合にのみ、サービスユニットを再起動します。
systemctl try-restart <name>.service
# systemctl try-restart <name>.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスの実行を中断せずに設定を再ロードします。
systemctl reload <name>.service
# systemctl reload <name>.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記システムサービスがこの機能をサポートしない場合は、このコマンドは無視されることに注意してください。このようなサービスを再起動するには、代わりに
reload-or-restart
コマンドおよびreload-or-try-restart
コマンドを使用します。
10.2.6. ブート時のシステムサービス起動の有効化 リンクのコピーリンクがクリップボードにコピーされました!
ブート時のサービスの自動起動を有効にすることができます。この変更は次回のリブート時に適用されます。
前提条件
- Root アクセス権がある。
手順
ユニットがマスクされているかどうかを確認します。
systemctl status <systemd_unit>
# systemctl status <systemd_unit>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユニットがマスクされている場合は、まずマスクを解除します。
systemctl unmask <systemd_unit>
# systemctl unmask <systemd_unit>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow システムの起動時に起動するようにサービスを有効にします。
systemctl enable <systemd_unit>
# systemctl enable <systemd_unit>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <systemd_unit>
は、有効にするサービスユニットの名前 (例:httpd
) に置き換えます。
必要に応じて、コマンドに --now
オプションを渡すと、ユニットがすぐに起動します。
10.2.7. ブート時のシステムサービス起動の無効化 リンクのコピーリンクがクリップボードにコピーされました!
システムの起動時にサービスユニットが自動的に起動しないようにすることができます。サービスを無効にすると、ブート時に起動されませんが、手動で起動できます。手動で開始できないようにサービスをマスクすることもできます。マスキングは、サービスが再度マスク解除されるまでサービスが永続的に使用できなくなるようにするサービスを無効にする方法です。
前提条件
- Root アクセス権がある。
手順
サービスがブート時に起動するのを無効にします。
systemctl disable <name>.service
# systemctl disable <name>.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <name>
は、無効にするサービスユニットの名前 (bluetooth
など) に置き換えます。必要に応じて、--now
コマンドを渡すと、サービスが現在実行中であれば停止させることができます。オプション: ユニットが管理者によって誤って起動されたり、他のユニットの依存関係として起動されたりするのを防ぐために、サービスをマスクします。
systemctl mask <name>.service
# systemctl mask <name>.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow