11.2. systemctl によるシステムサービス管理
システム管理者は、systemctl ユーティリティーを使用してシステムサービスを管理できます。実行中のサービスの起動、停止、再起動、ブート時に起動するサービスの有効化と無効化、利用可能なサービスのリスト表示、システムサービスのステータスの表示など、さまざまなタスクを実行できます。
11.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- サービスユニットがブート時に自動的に起動するかどうかの情報
11.2.2. システムサービスステータスの表示 リンクのコピーリンクがクリップボードにコピーされました!
サービスユニットを検査して詳細情報を取得し、サービスの状態 (ブート時の起動が有効かどうか、現在実行中かどうか) を確認できます。特定のサービスユニットの前または後に起動するように指定されたサービスを表示することもできます。
手順
システムサービスに対応するサービスユニットに関する詳細情報を表示します。
$ systemctl status <name>.service<name>は、確認するサービスユニットの名前 (gdmなど) に置き換えます。このコマンドでは、以下の情報が表示されます。
- 選択したサービスユニットの名前とその後に続く簡単な説明
- 利用可能なサービスユニットの情報 で説明されている 1 つ以上のフィールド
-
サービスユニットの実行: ユニットが
rootユーザーによって実行される場合 最新のログエントリー
Expand 表11.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
11.2.3. systemd ユニットの起動と停止 リンクのコピーリンクがクリップボードにコピーされました!
systemctl start コマンドを使用すると、現在のセッションでシステムサービスを起動できます。
前提条件
- Root アクセス権がある。
手順
現在のセッションでシステムサービスを起動します。
# *systemctl start <systemd_unit> *<systemd_unit>は、起動するサービスユニットの名前 (例:httpd.service) に置き換えます。注記systemdには、サービス間で正と負の依存関係が存在します。特定のサービスを起動するとき、別のサービスを 1 つまたは複数開始 (正の依存関係)、あるいはサービスを 1 つまたは複数停止 (負の依存関係) することが必要となる場合があります。新しいサービスの起動を試みると、ユーザーに明示的な通知なしに、
systemdがすべての依存関係を自動的に解決します。つまり、サービスを実行していて、負の依存関係にある別のサービスを起動しようとすると、最初のサービスが自動的に停止します。たとえば、
sendmailサービスを実行しているときにpostfixサービスを起動しようとすると、systemdはまずsendmailを自動的に停止します。これら 2 つのサービスは、競合しており、同じポートで実行できないためです。
11.2.4. システムサービスの停止 リンクのコピーリンクがクリップボードにコピーされました!
現在のセッションでシステムサービスを停止する場合は、systemctl stop コマンドを使用します。
前提条件
- Root アクセス
手順
システムサービスを停止します。
# systemctl stop <name>.service<name>は、停止するサービスユニットの名前 (bluetoothなど) に置き換えます。
11.2.5. システムサービスの再起動と再ロード リンクのコピーリンクがクリップボードにコピーされました!
restart コマンドを使用して次のアクションを実行すると、現在のセッションでシステムサービスを再起動できます。
- 現在のセッションで選択したサービスユニットを停止し、すぐに再起動する。
- 対応するサービスがすでに実行中の場合にのみ、サービスユニットを再起動する。
- システムサービスの実行を中断せずに、システムサービスの設定を再ロードする。
前提条件
- Root アクセス権がある。
手順
システムサービスを再起動します。
# systemctl restart <name>.service<name>は、再起動するサービスユニットの名前 (httpdなど) に置き換えます。選択したサービスユニットが実行中でない場合は、このコマンドによってサービスユニットが起動されます。
対応するサービスがすでに実行中の場合にのみ、サービスユニットを再起動します。
# systemctl try-restart <name>.serviceサービスの実行を中断せずに設定を再ロードします。
# systemctl reload <name>.service注記システムサービスがこの機能をサポートしない場合は、このコマンドは無視されることに注意してください。このようなサービスを再起動するには、代わりに
reload-or-restartコマンドおよびreload-or-try-restartコマンドを使用します。
11.2.6. ブート時のシステムサービス起動の有効化 リンクのコピーリンクがクリップボードにコピーされました!
ブート時のサービスの自動起動を有効にすることができます。この変更は次回のリブート時に適用されます。
前提条件
- Root アクセス権がある。
手順
ユニットがマスクされているかどうかを確認します。
# systemctl status <systemd_unit>ユニットがマスクされている場合は、まずマスクを解除します。
# systemctl unmask <systemd_unit>システムの起動時に起動するようにサービスを有効にします。
# systemctl enable <systemd_unit><systemd_unit>は、有効にするサービスユニットの名前 (例:httpd) に置き換えます。
必要に応じて、コマンドに --now オプションを渡すと、ユニットがすぐに起動します。
11.2.7. ブート時のシステムサービス起動の無効化 リンクのコピーリンクがクリップボードにコピーされました!
システムの起動時にサービスユニットが自動的に起動しないようにすることができます。サービスを無効にすると、ブート時に起動されませんが、手動で起動できます。手動で開始できないようにサービスをマスクすることもできます。マスキングは、サービスが再度マスク解除されるまでサービスが永続的に使用できなくなるようにするサービスを無効にする方法です。
前提条件
- Root アクセス権がある。
手順
サービスがブート時に起動するのを無効にします。
# systemctl disable <name>.service<name>は、無効にするサービスユニットの名前 (bluetoothなど) に置き換えます。必要に応じて、--nowコマンドを渡すと、サービスが現在実行中であれば停止させることができます。オプション: ユニットが管理者によって誤って起動されたり、他のユニットの依存関係として起動されたりするのを防ぐために、サービスをマスクします。
# systemctl mask <name>.service