13.2. systemctl によるシステムサービス管理
システム管理者は、systemctl
ユーティリティーを使用してシステムサービスを管理できます。実行中のサービスの起動、停止、再起動、ブート時に起動するサービスの有効化と無効化、利用可能なサービスのリスト表示、システムサービスのステータスの表示など、さまざまなタスクを実行できます。
13.2.1. システムサービスのリスト表示
現在ロードされているすべてのサービスユニットをリストし、使用可能なすべてのサービスユニットのステータスを表示できます。
手順
systemctl
コマンドを使用して、次のタスクのいずれかを実行します。
現在ロードされているすべてのサービスユニットをリストします。
$ systemctl list-units --type service UNIT LOAD ACTIVE SUB DESCRIPTION abrt-ccpp.service loaded active exited Install ABRT coredump hook abrt-oops.service loaded active running ABRT kernel log watcher abrtd.service loaded active running ABRT Automated Bug Reporting Tool ... systemd-vconsole-setup.service loaded active exited Setup Virtual Console tog-pegasus.service loaded active running OpenPegasus CIM Server LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, or a generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 46 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'
デフォルトでは、
systemctl list-units
コマンドは、アクティブなユニットのみを表示します。このコマンドは、サービスユニットファイルごとに、次のパラメーターの概要を提供します。UNIT
- サービスユニットのフルネーム
LOAD
- 設定ファイルのロード状態
ACTIVE
またはSUB
- 現在の高レベルおよび低レベルのユニットファイルのアクティベーション状態
DESCRIPTION
- ユニットの目的と機能の簡単な説明
--all
または-a
コマンドラインオプションを指定して次のコマンドを使用し、ロードされたすべてのユニットを状態に関係なく をリスト表示します。$ systemctl list-units --type service --all
利用可能なすべてのサービスユニットのステータス (enabled または disabled) をリスト表示します。
$ systemctl list-unit-files --type service UNIT FILE STATE abrt-ccpp.service enabled abrt-oops.service enabled abrtd.service enabled ... wpa_supplicant.service disabled ypbind.service disabled 208 unit files listed.
このコマンドでは、サービスユニットごとに以下を表示します。
UNIT FILE
- サービスユニットのフルネーム
STATE
- サービスユニットがブート時に自動的に起動するかどうかの情報
関連情報
13.2.2. システムサービスステータスの表示
サービスユニットを検査して詳細情報を取得し、サービスの状態 (ブート時の起動が有効かどうか、現在実行中かどうか) を確認できます。特定のサービスユニットの前または後に起動するように指定されたサービスを表示することもできます。
手順
システムサービスに対応するサービスユニットに関する詳細情報を表示します。
$ systemctl status <name>.service
<name>
は、確認するサービスユニットの名前 (gdm
など) に置き換えます。このコマンドでは、以下の情報が表示されます。
- 選択したサービスユニットの名前とその後に続く簡単な説明
- 利用可能なサービスユニットの情報 で説明されている 1 つ以上のフィールド
-
サービスユニットの実行: ユニットが
root
ユーザーによって実行される場合 最新のログエントリー
表13.2 利用可能なサービスユニットの情報 フィールド 説明 Loaded
サービスユニットがロードされているかどうかの説明、ユニットファイルへの絶対パス、およびブート時のユニット起動が有効かどうかの注記。
Active
サービスユニットが実行中かどうかの説明と、タイムスタンプ
Main PID
プロセス ID と、対応するシステムサービスの名前。
ステータス
対応するシステムサービスに関する追加情報
Process
関連プロセスに関する追加情報
CGroup
関連するコントロールグループ (
cgroups
) に関する追加情報。
特定のサービスユニットが実行中であることを確認します。
$ systemctl is-active <name>.service
特定のサービスユニットのブート時起動が有効かどうかを確認します。
$ systemctl is-enabled <name>.service
注記systemctl is-active
およびsystemctl is-enabled
コマンドは、指定したサービスユニットが実行中または有効な場合に、終了ステータス0
を返します。指定したサービスユニットの前に
systemd
がどのサービスの起動を指示するかを確認します。# systemctl list-dependencies --after <name>.service
たとえば、
gdm
の前に起動するサービスのリストを表示するには、次のように入力します。# systemctl list-dependencies --after gdm.service gdm.service ├─dbus.socket ├─getty@tty1.service ├─livesys.service ├─plymouth-quit.service ├─system.slice ├─systemd-journald.socket ├─systemd-user-sessions.service └─basic.target [output truncated]
指定したサービスユニットの後に
systemd
がどのサービスの起動を指示するかを確認します。# systemctl list-dependencies --before <name>.service
たとえば、
gdm
の後に起動するようにsystemd
が指示するサービスのリストを表示するには、次のように入力します。# systemctl list-dependencies --before gdm.service gdm.service ├─dracut-shutdown.service ├─graphical.target │ ├─systemd-readahead-done.service │ ├─systemd-readahead-done.timer │ └─systemd-update-utmp-runlevel.service └─shutdown.target ├─systemd-reboot.service └─final.target └─systemd-reboot.service
関連情報
13.2.3. systemd ユニットの起動と停止
systemctl start
コマンドを使用して、現在のセッションでシステムサービスを開始できます。
前提条件
- ルートアクセス権があります。
手順
現在のセッションでシステムサービスを起動します。
# *systemctl start <systemd_unit> *
<systemd_unit> を
、起動するサービスユニットの名前 (例:httpd.service
) に置き換えます。注記systemd
には、サービス間で正と負の依存関係が存在します。特定のサービスを起動するとき、別のサービスを 1 つまたは複数開始 (正の依存関係)、あるいはサービスを 1 つまたは複数停止 (負の依存関係) することが必要となる場合があります。新しいサービスの起動を試みると、ユーザーに明示的な通知なしに、
systemd
がすべての依存関係を自動的に解決します。つまり、サービスを実行していて、負の依存関係にある別のサービスを起動しようとすると、最初のサービスが自動的に停止します。たとえば、
sendmail
サービスを実行しているときにpostfix
サービスを開始しようとすると、これら 2 つのサービスは競合しており、同じポートで実行できないため、systemd は
まずsendmail
を自動的に停止します。
関連情報
-
システム上の
systemctl(1)
man ページ - ブート時のシステムサービス起動の有効化
- システムサービスステータスの表示
13.2.4. システムサービスの停止
現在のセッションでシステムサービスを停止する場合は、systemctl stop
コマンドを使用します。
前提条件
- Root アクセス
手順
システムサービスを停止します。
# systemctl stop <name>.service
<name>
は、停止するサービスユニットの名前 (bluetooth
など) に置き換えます。
関連情報
-
システム上の
systemctl(1)
man ページ - ブート時のシステムサービス起動の無効化
- システムサービスステータスの表示
13.2.5. システムサービスの再起動と再ロード
restart
コマンドを使用して次のアクションを実行すると、現在のセッションでシステムサービスを再起動できます。
- 現在のセッションで選択したサービスユニットを停止し、すぐに再起動する。
- 対応するサービスがすでに実行中の場合にのみ、サービスユニットを再起動する。
- システムサービスの実行を中断せずに、システムサービスの設定を再ロードする。
前提条件
- ルートアクセス権があります。
手順
システムサービスを再起動します。
# systemctl restart <name>.service
<name>
は、再起動するサービスユニットの名前 (httpd
など) に置き換えます。選択したサービスユニットが実行されていない場合は、このコマンドによってサービスユニットが起動されます。
対応するサービスがすでに実行中の場合にのみ、サービスユニットを再起動します。
# systemctl try-restart <name>.service
サービスの実行を中断せずに設定を再ロードします。
# systemctl reload <name>.service
注記システムサービスがこの機能をサポートしない場合は、このコマンドは無視されることに注意してください。このようなサービスを再起動するには、代わりに
reload-or-restart
コマンドおよびreload-or-try-restart
コマンドを使用します。
関連情報
-
システム上の
systemctl
man ページ - システムサービスステータスの表示
13.2.6. ブート時のシステムサービス起動の有効化
ブート時のサービスの自動起動を有効にすることができます。この変更は次回のリブート時に適用されます。
前提条件
- ルートアクセス権があります。
手順
ユニットがマスクされているかどうかを確認します。
# systemctl status <systemd_unit>
ユニットがマスクされている場合は、まずマスクを解除します。
# systemctl unmask <systemd_unit>
起動時にサービスを開始するように有効にします。
# systemctl enable <systemd_unit>
<systemd_unit> を
、有効にするサービスユニットの名前 (例:httpd
) に置き換えます。
必要に応じて、コマンドに --now
オプションを渡すと、ユニットがすぐに起動されます。
関連情報
-
システム上の
systemctl(1)
man ページ - システムサービスステータスの表示
- システムサービスの起動
13.2.7. ブート時のシステムサービス起動の無効化
システムの起動時にサービスユニットが自動的に起動しないようにすることができます。サービスを無効にすると、ブート時に起動されませんが、手動で起動できます。手動で開始できないようにサービスをマスクすることもできます。マスキングは、サービスが再度マスク解除されるまでサービスが永続的に使用できなくなるようにするサービスを無効にする方法です。
前提条件
- ルートアクセス権があります。
手順
サービスがブート時に起動するのを無効にします。
# systemctl disable <name>.service
<name>
は、無効にするサービスユニットの名前 (bluetooth
など) に置き換えます。オプションで、--now
コマンドを渡して、現在実行中のサービスも停止します。オプション: ユニットが管理者によって誤って起動されたり、他のユニットの依存関係として起動されたりするのを防ぐには、サービスをマスクします。
# systemctl mask <name>.service
関連情報
-
システム上の
systemctl(1)
man ページ - システムサービスステータスの表示
- システムサービスの停止