Linux / コマンド / systemctl - systemd サービスの状態確認と管理

systemctlは、systemdが管理するサービスやその他のユニットの状態を確認し、開始・停止・再起動・起動時の自動開始を制御します。サービス障害を調査する際は、まずstatusで現在の状態を確認してください。 関連する条件と手順は、systemd サービスと起動ログの確認を参照できます。

startは今サービスを開始し、enableはユニット定義に従って起動時などの自動開始につなぐ設定を行います。開始と有効化は別の操作です。activeは現在のアクティブ状態、enabledは有効化の状態を表します。ログの詳細はjournalctlでサービスを指定して確認します。

基本的な文法

systemctl [オプション] コマンド [ユニット]

インストールされている実装とオプションは、配布版によって異なる場合があります。man systemctlで現在のシステムの説明を確認してください。

使用例

サービス状態確認

systemdはサービスなどを管理する仕組みで、管理対象をユニットと呼びます。この例はsystemdが動作するLinuxを対象とします。sshd.serviceは、インストール済みの実際のサービス名に置き換えてください。見つからない場合はsystemctl list-unit-files --type=serviceで名前を確認します。

systemctl status sshd.service

現在の実行状況確認

スクリプトで状態をチェックする際には終了状態も併せて確認します。

systemctl is-active sshd.service

起動時の自動開始設定確認

現在の実行状況に関係なく enable 状態を確認します。

systemctl is-enabled sshd.service

サービスの状態と実行の有無を区別する

systemctl is-active サービス名 は現在の実行状態を簡潔に知らせます。次のサービス名は環境に応じて変更する必要があります。

systemctl is-active sshd.service

サービスが実行中のシステムの例示出力:

active

activeはユニットがアクティブな状態であることを示します。常駐サービスならstatusのactive (running)などで詳細を確認します。一度だけ処理するサービスではactive (exited)となることもあり、activeだけではプロセスが動作中と断定できません。自動開始の設定はsystemctl is-enabled sshd.serviceで別途確認します。staticなど、単純な有効・無効以外の状態もあります。サービスのrestartは接続を中断し得るため、変更前に状態とログを確認してください。

start は今サービスを開始し、enable は起動時の自動起動設定を変更します。両者はお互いを自動的に保証するものではありません。ユニットファイル自体を修正した場合は sudo systemctl daemon-reload で定義を再読み込みした後、必要なサービスを再起動して状態とログを確認してください。

主なオプションと形式

オプション・形式 説明
status ユニット 状態と最新のログの要約を表示します。
start / stop ユニット ユニットを現在開始または停止します。
restart ユニット 停止後に再起動するため、接続が切れる可能性があります。
reload ユニット サービスがサポートしていれば、再起動せずに設定を再読み込みします。
enable / disable ユニット 起動時の自動開始設定を変更します。

使用する際の注意点

リモート接続サービスや運用中のウェブサービスをstop·restartすると、接続やリクエストが中断される可能性があります。ユニット名、変更を行う時間帯、復旧手順をあらかじめ確認してください。daemon-reloadは、変更されたユニット定義を再読み込みする作業であり、サービスを再起動するコマンドではありません。systemd以外のシステムには適用されません。

よくある質問

systemctl enable を実行するとサービスはすぐに起動しますか?

いいえ。enableだけではサービスは起動しません。今すぐ実行したい場合は、start を別途実行するか、サポートされている --now オプションを使用します。

公式ドキュメント

オプションの正確な動作や実装ごとの違いは、systemctl 関連の公式ドキュメントで確認できます。