【Linux】systemctlコマンドの使い方|起動・停止・再起動

【Linux】systemctlコマンドの使い方|起動・停止・再起動

PR Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:5,313

Linuxのsystemctlコマンドの使い方をわかりやすく解説。サービスの起動・停止・再起動・自動起動設定(enable/disable)から、ステータス確認、ログ確認(journalctl連携)、起動しないときのトラブルシューティングまで実務で役立つ操作を網羅。

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。

初心者向け

わかばちゃんと学ぶ サーバー監視

難易度
実用性
読みやすさ

マンガと図解が中心で圧倒的に読みやすい。負荷調査の手法がスッと理解できるようになります。

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

ゼロからわかる Linuxコマンド200本ノック―基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!

難易度
実用性
習得度

アウトプット重視で記憶に定着しやすい。反復練習でLinux操作が自由自在になります。

エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書

難易度
実用性
読みやすさ

LinuxLinux [リナックス / ライナックス]オープンソースのOSカーネルサーバーを運用・構築する上で、Webサーバーやデータベースなどのサービス(デーモン)の起動・停止や自動起動設定は必須の日常操作です。

CentOSCentOS [セントオーエス]Red Hat Enterprise Linux互換の安定したLinuxディストリビューション Stream、RHEL系ディストリビューション、UbuntuUbuntu [ウブントゥ]人気のLinuxディストリビューションなど、主要なLinuxディストリビューションではinitinit [イニット]initialization(初期化)の略。システムやオブジェクトを初期状態にすることシステムとして systemd が標準採用されており、その操作の中核を担うのが systemctl コマンドです。

本記事では、現場で頻繁に使う基本的なコマンドから、ステータスの読み解き方、ログ調査、起動失敗時のトラブルシューティング手順まで、要点を絞ってシンプルに解説します。

想定環境

systemctlの基礎知識と基本操作

systemctlとは?systemdとの関係

systemctl は、Linuxのシステムとサービスを管理するバックグラウンドプログラム systemd を操作するための管理コマンド です。

  • systemd: システム起動時のプロセス初期化や並列起動、各種サービス・ソケット・マウントポイントなどのリソース(ユニット)を一元管理する仕組み。
  • systemctl: 管理者が systemd に対して「サービスを起動せよ」「状態を教えろ」と命令を下すためのインターフェース。

従来のservice/chkconfigコマンドとの対比

古いLinux(CentOS 6以前など)では、サービス操作に service、自動起動設定に chkconfig がよく使われていました。 systemdを採用したLinuxでは、サービスの起動・停止や自動起動設定などを systemctl で管理するのが基本です。

操作従来のコマンド (SysVinit)現代のコマンド (systemd)
サービスの起動service nginx startsudo systemctl start nginx
サービスの停止service nginx stopsudo systemctl stop nginx
サービスの再起動service nginx restartsudo systemctl restart nginx
稼働状態の確認service nginx statussystemctl status nginx
自動起動の有効化chkconfig nginx onsudo systemctl enable nginx
自動起動の無効化chkconfig nginx offsudo systemctl disable nginx

サービスの基本操作(起動・停止・再起動・リロード)

日常的に最もよく使うサービス制御コマンドです。システムサービスの制御には通常、管理者権限(sudo)が必要です。

サービス制御の基本コマンド
# サービスを起動する
sudo systemctl start nginx
# サービスを停止する
sudo systemctl stop nginx
# サービスを再起動する(プロセスを一度停止してから起動)
sudo systemctl restart nginx
# 設定ファイルを再読み込みする(プロセスを停止させずに反映)
sudo systemctl reload nginx

restart と reload の使い分け

  • reload: Webサーバーの設定変更など。サービスが対応している場合、プロセスを停止せずにサービス側の設定を再読み込みできます
  • restart: サービスを停止してから再度起動しますreload に非対応のサービスや、根本的な設定変更を行った場合はこちらを使います。

サービスの自動起動設定(有効化・無効化)

OS起動時にサービスを自動的に立ち上げるかどうかを制御します。

自動起動の設定と確認
# 自動起動を有効にする
sudo systemctl enable nginx
# 自動起動を無効にする
sudo systemctl disable nginx
# 自動起動が有効になっているか確認する
systemctl is-enabled nginx

is-enabled の主な戻り値 単純な有効/無効以外にも、以下のようなステータスが返されることがあります。

  • enabled / disabled: 自動起動の有効 / 無効
  • static: 自動起動の設定を持たないが、他のサービスから依存されて起動しうる状態
  • masked: 完全に無効化されており、手動での起動もできない状態

便利技:起動と自動起動を1行で同時に行う(—now)

通常は startenable を別々に実行しますが、--now オプションを付けると 「今すぐ起動」と「自動起動の有効化」を1行で同時に実行 できます。

今すぐ起動+自動起動を同時に設定
# 起動と自動起動有効化を同時に行う
sudo systemctl enable --now nginx
# 停止と自動起動解除を同時に行う
sudo systemctl disable --now nginx

新規サーバーの構築時などに手数を減らせる定番テクニックです。

サービスの状態確認(status)

サービスが現在正常に稼働しているか、エラーで停止していないかを確認します。トラブル調査の起点となる最重要コマンドです。

Tips: status確認時は sudo 推奨 systemctl status は一般ユーザーでも実行できますが、サービスの詳細な状態やログを確認する際は、権限の影響を避けるため sudo systemctl status <サービス> を使用するのが確実です。

ステータス確認コマンド
systemctl status nginx
実行結果の例
nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
Active: active (running) since Sat 2026-09-12 10:00:00 JST; 1h ago
Main PID: 12345 (nginx)
Tasks: 3 (limit: 4684)
Memory: 6.2M
CPU: 85ms
CGroup: /system.slice/nginx.service
├─12345 "nginx: master process /usr/sbin/nginx"
├─12346 "nginx: worker process"
└─12347 "nginx: worker process"
Sep 12 10:00:00 server01 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Sep 12 10:00:00 server01 systemd[1]: Started The nginx HTTP and reverse proxy server.

ステータス画面で見るべき4つのポイント

  1. Loaded:
    • ユニットファイルが読み込まれているパスと、自動起動設定(enabled または disabled)が示されます。
    • ※末尾の preset は、systemdのプリセットポリシーに基づく設定値を示します。systemdのバージョンやディストリビューションによって表示形式が異なる場合があります。
  2. Active:
    • active (running): 正常に稼働中
    • inactive (dead): 停止中
    • failed: 起動失敗または異常終了(原因調査が必要)
    • active (exited): 起動処理などのプロセスは終了しているものの、systemd上では正常に処理が完了した状態としてactive扱いになっている状態です。RemainAfterExit=yes を設定したサービスなどで見られます。
  3. Main PID:
    • systemdがそのサービスのメインプロセスとして認識しているプロセスのPIDです。
  4. 末尾のログ(最新ログメッセージ):
    • 直近の起動イベントやエラー出力が表示されます。起動失敗時には、直近のエラーメッセージが表示され、原因を特定する手掛かりになることがあります。

サービス一覧の確認(list-units / list-unit-files)

「現在どんなサービスが動いているか」「システムにどんなサービスが登録されているか」を調べる際は、以下の2つのコマンドを使い分けます。

サービス一覧コマンド
# 1. 現在ロードされているサービス一覧を表示
systemctl list-units --type=service
# 2. 停止中も含め、ロードされている全サービスを表示
systemctl list-units --type=service --all
# 3. インストールされているユニットファイルと自動起動状態の一覧を表示
systemctl list-unit-files --type=service

list-units と list-unit-files の違い

  • list-units: 現在 systemdがロードしているユニットの状態 を確認します。デフォルトでは主にアクティブなユニットが表示され、--all を付けると非アクティブなユニットも含めて確認できます。「現在ロードされているサービス一覧」を見たいときに使います。
  • list-unit-files: ディスク上に配置された ユニットファイルと自動起動設定の一覧 を確認します。「どのサービスがインストールされていて、自動起動がどう設定されているか」を確認したいときに便利です。

特定のサービスを検索したい場合は、grep とパイプで組み合わせます。

特定サービスの絞り込み例
systemctl list-unit-files --type=service | grep -E "nginx|httpd|mariadb"

systemdの応用設定(ユニット・ターゲット・ログ)

ユニットファイルの設定と変更時のルール

systemdで管理されるサービスの設定は「ユニットファイル(.service)」に記述されています。

ユニットファイルの配置場所

ユニットファイルは主に以下の場所に配置されます。

  • /usr/lib/systemd/system/: ディストリビューションやパッケージによって提供されるユニットファイル
  • /etc/systemd/system/: システム管理者が作成・変更するユニットファイルやoverride設定

/etc/systemd/system//usr/lib/systemd/system/ より優先されます。

既存サービスの設定を変更したい場合は、/usr/lib/systemd/system/ のファイルを直接編集せず、/etc/systemd/system/ にコピーして編集するか、sudo systemctl edit <サービス名> コマンドを使ってオーバーライドするのが推奨されます。

ユニットファイルを直接変更した場合は daemon-reload を実行

ユニットファイルを新規作成したり、既存のユニットファイルを直接書き換えたりした場合は、daemon-reload を実行してsystemdに変更を再読み込みさせます。

systemd設定の再読み込み
sudo systemctl daemon-reload

注意 systemctl daemon-reload を実行せずにユニットファイルを変更すると、systemdが変更前のユニット設定を保持したまま動作する場合があります。変更したユニットファイルをsystemdに再読み込みさせるため、ユニットファイルを変更した後は daemon-reload を実行します。

💡 daemondaemon [デーモン]バックグラウンドで動作するプロセス-reload と reload の違い

ターゲット(ランレベル)の管理

systemdでは、従来の「ランレベル(動作モード)」に相当する仕組みを ターゲット(Target) と呼びます。

よく使われるターゲットは以下の2つです。

ターゲットの確認と変更
# 現在のデフォルト起動ターゲットを確認
systemctl get-default
# 次回起動時のターゲットをCUI環境に変更
sudo systemctl set-default multi-user.target
# 次回起動時のターゲットをGUI環境に変更
sudo systemctl set-default graphical.target
# システムを再起動せずに一時的にターゲットを切り替える
sudo systemctl isolate multi-user.target

isolate は現在実行中のサービスを停止する可能性があるため、実運用環境では影響範囲を確認してから実行してください。

ログの確認(journalctlとの連携)

systemctl status の下部に表示されるログは直近の数行のみです。トラブル調査などで過去のログを詳しく追いたい場合は、systemdのログ管理コマンド journalctl を使います。

サービスログの確認
# 特定サービスのログを全件表示(less形式)
sudo journalctl -u nginx
# ログをリアルタイムで監視(tail -f と同等)
sudo journalctl -u nginx -f
# 本日発生したエラー(err)以上の重要ログのみ抽出
sudo journalctl -u nginx -p err --since today

journalctl の詳しいオプションや検索方法については、以下の記事で徹底解説しています。

journalctlとは?使い方とオプションをわかりやすく解説【Linux】
ITナレッジライフ

journalctlとは?使い方とオプションをわかりやすく解説【Linux】

Linuxのjournalctlコマンドの使い方を初心者向けに解説します。systemdのログを確認するjournalctlの基本から、-u・-f・-p・--sinceなど主要オプション、サービスログの絞り込みやリアルタイム監視、ログの管理方法まで具体例付きで紹介します。

トラブルシューティングとまとめ(チートシート)

サービスが起動しないときの調査手順(3ステップ)

サービスを start した際にエラーが出たり、ステータスが failed になったりした場合のトラブルシューティング手順です。

Terminal window
# 例: 起動時にエラーが出た場合
$ sudo systemctl start nginx
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xeu nginx.service" for details.

ステップ1: systemctl status で大枠の失敗原因を確認

まずはステータスを確認し、プロセスの終了コードやメッセージを確認します。

ステータス確認
systemctl status nginx

code=exited, status=1/FAILURE のように終了コードが表示され、末尾数行に直接の原因(設定エラーなど)が出力されている場合があります。

ステップ2: journalctl で詳細なエラーメッセージを特定

ログの末尾数行で分からない場合は、-xeu オプション付きでログを確認します。エラーメッセージで提示されるコマンド例に合わせて、.service まで省略せずに指定すると確実です。

詳細エラーログの確認
sudo journalctl -xeu nginx.service

設定ファイルの構文ミス(シンタックスエラー)、必要なディレクトリのパーミッション不足、ポート番号の競合などのエラーの手掛かりが記録されている場合があります。

ステップ3: よくある原因の切り分け

  1. 設定ファイルの文法エラー:
  2. ポートの競合:
    • 起動しようとしているポート(例: 80番ポート)を別のプロセスがすでに使っていないか確認します。
    ポート使用状況の確認
    sudo ss -tulnp | grep :80
  3. ユニットファイルの設定変更忘れ:
    • ユニットファイルを書き換えた場合は、sudo systemctl daemon-reload を打ってから再度 sudo systemctl restart <サービス> を試します。

まとめ:systemctlコマンド早見表(チートシート)

日常的な運用でよく使う systemctl コマンドの一覧です。手元での作業時にチートシートとしてご活用ください。

操作内容コマンド権限
サービスの起動sudo systemctl start <サービス>要 root
サービスの停止sudo systemctl stop <サービス>要 root
サービスの再起動sudo systemctl restart <サービス>要 root
設定のリロードsudo systemctl reload <サービス>要 root
自動起動の有効化sudo systemctl enable <サービス>要 root
自動起動の無効化sudo systemctl disable <サービス>要 root
起動+自動起動を同時実行sudo systemctl enable --now <サービス>要 root
自動起動状態の確認systemctl is-enabled <サービス>一般
稼働状況の確認systemctl status <サービス>一般(※)
稼働中サービス一覧systemctl list-units --type=service一般
自動起動設定一覧systemctl list-unit-files --type=service一般
systemd設定の再読み込みsudo systemctl daemon-reload要 root
サービスのログ監視sudo journalctl -u <サービス> -f詳細確認では sudosudo [スードゥー / スーデュー]Superuser doの略。一時的に他のユーザー(主に管理者特権)の権限でコマンドを実行する 推奨
デフォルトターゲット確認systemctl get-default一般

以上で本記事の解説を終わります。
よいITライフを!
ITナレッジライフ 運営者
この記事を書いた人

Z (ITナレッジライフ)

現役のITエンジニア。Linux、プログラミング、IT用語など、日々の業務で得た「痒いところに手が届く」技術情報を発信しています。

プロフィールと編集ポリシーを見る

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。

人気記事


記事を評価

Thanks!
目次
Scroll to Top