systemctlとjournalctlの使い方|Linuxサービスの状態・自動起動・ログを確認する
AlmaLinux 9のApacheを例に、systemctlのactiveとenabled、statusの読み方、journalctlでのログ確認を学びます。start・restart・reloadを使い分け、最後はHTTPステータスコードとページ本文で動作を確かめます。
学習ガイドの目次 目的別ガイド
目的別ガイド
Apacheの現在の状態と自動起動の設定を区別し、ログとHTTP応答から動作を確認できる。
対象:第4回「Apacheでページを表示」と同じ構成で実習している方。
この記事の目次
学習用のLinuxへSSHで接続する
このガイドでは、第4回「Apacheでページを表示」まで進めた学習用の仮想マシンを使います。Intel/AMDの64ビットCPU(x86_64)を搭載したWindows 11 PCでVirtualBoxを動かし、AlmaLinux 9にApacheと自作ページを用意してあることが前提です。
サービスの起動・再起動や設定変更を試す対象は、この学習用の仮想マシンです。第4回のNAT設定(SSHは2222→22、HTTPは8080→80)を使い、ホストIPは 127.0.0.1、SELinuxとfirewalldは有効な状態を保ちます。
仮想マシンが停止中なら、VirtualBoxで起動し、Linuxのログイン画面が出るまで待ちます。次のコマンドはSSHに接続していないWindowsのPowerShellで実行します。既に接続中なら、そのLinuxの画面を使って進めてください。
- 実行場所
- Windows(PowerShell)
- アカウント
- 現在のWindowsユーザー
- 権限
- 通常
ssh -p 2222 labuser@127.0.0.1labuser のLinux用パスワードを入力します。入力中は文字が表示されません。初回の接続先確認や接続エラーは、第3回のSSH接続手順を確認してください。接続後、操作対象を確かめます。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
whoami
hostnamelabuser linux-lab
ここからのLinuxコマンドは、SSH接続後の labuser で実行します。ユーザーやホスト名が異なる場合は、操作対象を確認してから進めましょう。
statusで、サービスの現在の状態を読む
systemdは、Linuxの起動処理やサービスを管理する仕組みです。Apacheのようなサービスの状態を調べたり、動作を切り替えたりするコマンドが systemctl です。Apacheは httpd.service という名前で管理され、以下では省略形の httpd を使います。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
systemctl status httpd --no-pager --fullLoaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled) Active: active (running) since … Main PID: 1234 (httpd)
| 見る場所 | 読み取ること |
|---|---|
Loaded: loaded | ユニットファイルを読み込めている状態。ユニットファイルは、systemdがサービスの起動方法などを読み取る設定ファイルです。 |
Active: active (running) | このApacheサービスが現在動作中。inactive (dead) なら停止中、failed なら起動・動作などで失敗した状態です。 |
Main PID | 主となるプロセスの番号。起動し直すと変わることがあります。 |
--no-pager は、ページ送り用の閲覧画面を使わず、そのまま表示する指定です。--full は長い行の省略を防ぎます。Unit httpd.service could not be found. と出る場合は、接続先と第4回のApache導入手順を確認してください。
active でも、目的のWebページを取得できるとは限りません。最後にHTTP応答も確認します。
activeとenabledを分けて確認する
activeは現在の動作状態、enabledは自動起動の設定です。それぞれを短く表示するコマンドで確認しましょう。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
systemctl is-active httpdactive
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
systemctl is-enabled httpdenabled
| 現在の状態 | 自動起動の設定 | このApacheでの意味 |
|---|---|---|
active | enabled | 今は動作中で、次のLinux起動時も自動起動の対象。 |
active | disabled | 今は動作中だが、自動起動は設定していない。 |
inactive | enabled | 今は停止中だが、自動起動は設定してある。 |
inactive | disabled | 今は停止中で、自動起動も設定していない。 |
enabled でも、設定エラーなどがあれば起動に失敗します。また、disabled は手動起動を禁止する設定ではありません。status の Loaded 行では、enabled と preset: disabled が並ぶ場合があります。preset は配布元の標準方針で、現在の設定はその前の enabled を見ます。
第4回の設定を引き継いでいれば enabled です。disabledになっていて、自動起動を設定したい場合だけ、次を実行します。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo systemctl enable httpdenable だけでは、停止中のサービスはその場で起動しません。実行した場合は is-enabled で確認します。第4回の enable --now は、自動起動の設定と、その場での起動をまとめた指定でした。RHEL 9公式:サービスの状態と自動起動
journalctlで、Apacheに関係する最近のログを読む
ログは、起動・停止・エラーなどの出来事を記録したものです。journalctl は、systemdのジャーナルという仕組みに集められたログを読むコマンドです。システム側のログも確認できるよう、ここでは sudo を使います。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo journalctl -u httpd -n 30 --no-pager| 指定 | 意味 |
|---|---|
-u httpd | Apacheのサービスに関係するログへ絞る。 |
-n 30 | 直近30件を表示する。必要な時刻まで戻れなければ、30を100などへ増やす。 |
--no-pager | 閲覧画面を開かず、コマンドの結果として表示する。 |
Nov 07 10:00:00 linux-lab systemd[1]: Starting The Apache HTTP Server... Nov 07 10:00:01 linux-lab systemd[1]: Started The Apache HTTP Server.
この指定では、表示範囲の中で新しい記録が下に並びます。左から日時・ホスト名・記録したプログラム・メッセージを読み、まず自分が操作した時刻の前後を探します。昔のエラーと、直近の操作の結果を混同しないようにしましょう。
failed が出たときは、その前後にある設定ファイル名・行番号・エラーの内容まで確認します。末尾の「失敗した」という行だけでは、原因が分からないことがあります。-- No entries -- なら、表示条件と保存されているログの範囲も確認し、正常だったとは決めつけません。
必要な場合だけ、start・restart・reloadを選ぶ
正常に動作していて設定も変えていなければ、この節の操作は不要です。操作が必要な場合は、目的に合うものを1つ選び、結果を確認してから次へ進みます。
まずApacheの設定ファイルを確認します。httpd -t は、設定の書き方に誤りがないかを調べる構文チェックです。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo httpd -tSyntax OK
警告が一緒に出る場合は、その内容も読みます。構文エラーがある場合はファイル名や行番号を手がかりに修正し、再確認してから進めます。Syntax OK は構文の確認結果で、Webページの配信まで保証するものではありません。
停止中のApacheを動かす:start
動かしたいApacheが inactive の場合に使います。failed なら、先にログで原因を調べ、対処してから起動します。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo systemctl start httpdApacheを停止して起動し直す:restart
再起動が必要な変更を反映するときなどに使います。再起動中は、処理中の接続が切れることがあります。試す場合は、この学習用Apacheで行います。停止中に実行した場合は起動します。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo systemctl restart httpd動作中のApacheに設定を読み直させる:reload
設定ファイルを変更し、再読み込みで反映できる場合に使います。reload は、その機能に対応したサービスで使える操作です。停止中のApacheを動かす場合は start を選びます。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo systemctl reload httpd第4回の index.html の本文を書き換えただけなら、通常は reload や restart は不要です。また、daemon-reload はsystemdのユニットファイルの変更を読み直す別の操作で、Apacheの設定を反映する reload とは区別します。
操作後は、上の status と journalctl のコマンドを再実行し、現在の状態と直近の記録を確認します。何も表示されず入力待ちへ戻る操作もあるため、エラーの有無だけで判断しません。
確認した公式資料:systemctlの各操作、Apacheの構文チェック
最後に、HTTPステータスコードとページ本文を確認する
サービスが起動していることに加え、目的のページを返せることまで確かめます。まずSSH接続中のLinuxから、Linux自身のApacheへ接続します。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
curl -i --noproxy 127.0.0.1 http://127.0.0.1/HTTP/1.1 200 OK … <h1>Linux Lab is working.</h1>
-i はHTTPステータスコードや応答ヘッダーを本文と一緒に表示する指定です。--noproxy 127.0.0.1 は、この接続先でプロキシサーバーを使わない指定です。Linuxの127.0.0.1へHTTPで接続し、ポート番号を省略しているので80番ポートを使います。
200 OKと、作成した本文の両方を確認します。200でも別のページが返る場合や、403・404が返る場合は、目的を達成できていません。
続いて、WindowsのPowerShellを別のタブかウィンドウで開き、Windowsからの接続経路も確かめます。次のコマンドを、SSH接続中のLinuxへ入力しないようにしてください。
- 実行場所
- Windows(PowerShell)
- アカウント
- 現在のWindowsユーザー
- 権限
- 通常
curl.exe -i --noproxy 127.0.0.1 http://127.0.0.1:8080/こちらはWindowsの127.0.0.1:8080から、VirtualBoxを経由してLinuxの80番ポートへ接続します。Windowsでは curl.exe と指定し、同じ200 OKと本文が返ることを確認します。
Linuxから成功しWindowsから失敗する場合は、サービスの再起動を繰り返さず、第4回の接続経路の確認へ進みます。ポート転送やfirewalldの設定を調べる必要があるためです。
- activeとenabledが、それぞれ何を確認しているか説明できる
- Apacheに関係する直近のログから、操作した時刻の記録を探せる
- start・restart・reloadを、目的に応じて選べる
- LinuxとWindowsの両方から、200 OKと自作ページの本文を確認できた
できたことを確認
- httpdの現在の状態と自動起動の設定を別々に確認できる
- journalctlでhttpdに関係する直近30件を確認できる
- 必要な操作の後に状態・ログ・HTTP応答を確認できる
参考資料・対象環境
- RHEL 9:Managing systemd(状態確認・起動・自動起動)
- systemd公式:systemctlマニュアル
- systemd公式:journalctlマニュアル(version 252)
- Apache HTTP Server 2.4:httpdの構文チェック
- RHEL 9:Setting up the Apache HTTP web server
この教材の対象と確認状況
Windows 11(Intel / AMDの64bit PC)、VirtualBox 7.2系、AlmaLinux 9系を対象にしています。2026年11月8日時点の公式資料を確認して作成しています。画面名はバージョンや表示言語で異なる場合があります。
掲載した出力は読み方を示す表示例です。この版はWindows実機で全手順を通した動作確認は未実施です。研修で使用する前に、ご利用のPC環境で事前確認をお願いします。
AZWorkが独自に構成した実習ガイドです。体系的に学ぶ参考資料として、LPI-JapanのLinuxサーバー構築標準教科書もご覧ください。