メインコンテンツへスキップ
  1. Linux 関連記事一覧/
  2. Ubuntu 26.04 LTS Server/

Ubuntu 26.04 LTS Server のサービス管理(systemctl)とログ確認(journalctl)

目次

サービスの操作とログ確認の方法

Ubuntu 26.04 LTS Server でサービス(systemd のユニット)を起動・停止し、自動起動を設定し、journalctl でログを確認する手順を解説します。

本記事の実行例は、操作対象のサービスとして nginx を使用しています。systemd のバージョンは 259 です。

systemd のバージョン確認 実行例
kazulog@sv1:~$ systemctl --version | head -2
systemd 259 (259.5-0ubuntu3.4)
+PAM +AUDIT +SELINUX +APPARMOR +IMA +IPE +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +KMOD +LIBCRYPTSETUP +LIBCRYPTSETUP_PLUGINS +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK +BTF -XKBCOMMON -UTMP +SYSVINIT +LIBARCHIVE
kazulog@sv1:~$

サービスの一覧と状態の確認

現在動作しているサービスは systemctl list-units で一覧できます。

動作中のサービスの一覧表示コマンド
systemctl list-units --type=service --state=running
動作中のサービスの一覧表示 実行例
kazulog@sv1:~$ systemctl list-units --type=service --state=running --no-pager
  UNIT                        LOAD   ACTIVE SUB     DESCRIPTION
  chrony.service              loaded active running chrony, an NTP client/server
  cron.service                loaded active running Regular background program processing daemon
  dbus.service                loaded active running D-Bus System Message Bus
  getty@tty1.service          loaded active running Getty on tty1
  ModemManager.service        loaded active running Modem Manager
  multipathd.service          loaded active running Device-Mapper Multipath Device Controller
  networkd-dispatcher.service loaded active running Dispatcher daemon for systemd-networkd
  polkit.service              loaded active running Authorization Manager
  rsyslog.service             loaded active running System Logging Service
  serial-getty@ttyS0.service  loaded active running Serial Getty on ttyS0
  ssh.service                 loaded active running OpenBSD Secure Shell server
  systemd-journald.service    loaded active running Journal Service
  systemd-logind.service      loaded active running User Login Management
  systemd-networkd.service    loaded active running Network Management
  systemd-resolved.service    loaded active running Network Name Resolution
  systemd-timedated.service   loaded active running Time & Date Service
  systemd-udevd.service       loaded active running Rule-based Manager for Device Events and Files
  udisks2.service             loaded active running Disk Manager
  unattended-upgrades.service loaded active running Unattended Upgrades Shutdown
  user@1000.service           loaded active running User Manager for UID 1000

Legend: LOAD   → Reflects whether the unit definition was properly loaded.
        ACTIVE → The high-level unit activation state, i.e. generalization of SUB.
        SUB    → The low-level unit activation state, values depend on unit type.

20 loaded units listed.
kazulog@sv1:~$

個別のサービスの状態は systemctl status で確認します。

サービスの状態確認コマンド
systemctl status [SERVICE]
入力箇所入力内容
[SERVICE]サービス名(.service は省略可)
サービスの状態確認 実行例
kazulog@sv1:~$ systemctl status nginx --no-pager -l | cat
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Thu 2026-09-10 15:48:02 JST; 16s ago
 Invocation: 4e1e63adfe344ba4b6d7bb99d3946a82
       Docs: man:nginx(8)
    Process: 1899 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 1901 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 1929 (nginx)
      Tasks: 2 (limit: 1486)
     Memory: 2.3M (peak: 5M)
        CPU: 57ms
     CGroup: /system.slice/nginx.service
             ├─1929 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             └─1932 "nginx: worker process"

Sep 10 15:48:02 sv1 systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Sep 10 15:48:02 sv1 systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.
kazulog@sv1:~$

出力の読み方は次のとおりです。

内容
先頭の記号(緑)は動作中、 は停止中、× は失敗
Loaded:ユニットファイルの場所と、自動起動の設定enabled / disabled
Active:現在の状態active (running) / inactive (dead) / failed)と、その状態になった時刻
Main PID:メインプロセスのプロセスID
末尾の数行そのサービスの直近のログ(journalctl -u の内容)

状態だけを確認したい場合は is-activeis-enabled を使います。スクリプトの中で判定する場合に便利です。

状態のみを確認するコマンド
systemctl is-active [SERVICE]
systemctl is-enabled [SERVICE]
状態のみを確認する 実行例
kazulog@sv1:~$ systemctl is-active nginx
active
kazulog@sv1:~$ systemctl is-enabled nginx
enabled

サービスの起動・停止・再起動

サービスの操作コマンド
sudo systemctl start [SERVICE]
sudo systemctl stop [SERVICE]
sudo systemctl restart [SERVICE]
sudo systemctl reload [SERVICE]
コマンド動作
startサービスを起動する
stopサービスを停止する
restartサービスを停止してから起動する(プロセスが作り直される)
reloadプロセスを止めずに設定ファイルを読み直す(対応していないサービスもある)
サービスの起動・停止・再起動 実行例
kazulog@sv1:~$ sudo systemctl stop nginx
kazulog@sv1:~$ systemctl is-active nginx
inactive
kazulog@sv1:~$ systemctl status nginx --no-pager -l | head -12 | cat
○ nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: inactive (dead) since Thu 2026-09-10 15:48:19 JST; 114ms ago
   Duration: 16.971s
 Invocation: 4e1e63adfe344ba4b6d7bb99d3946a82
       Docs: man:nginx(8)
    Process: 1899 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 1901 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 2217 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
   Main PID: 1929 (code=exited, status=0/SUCCESS)
   Mem peak: 5M
        CPU: 73ms
kazulog@sv1:~$ sudo systemctl start nginx
kazulog@sv1:~$ systemctl is-active nginx
active
kazulog@sv1:~$ sudo systemctl restart nginx
kazulog@sv1:~$ sudo systemctl reload nginx
kazulog@sv1:~$

停止中は status の表示が inactive (dead) に変わります。操作は成功しても何も表示されないため、is-activestatus で結果を確認してください。

各操作は journal に記録されます。

操作の記録 実行例
kazulog@sv1:~$ sudo journalctl -u nginx --since '2 min ago' --no-pager | cat
Sep 10 15:48:02 sv1 systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Sep 10 15:48:02 sv1 systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.
Sep 10 15:48:19 sv1 systemd[1]: Stopping nginx.service - A high performance web server and a reverse proxy server...
Sep 10 15:48:19 sv1 systemd[1]: nginx.service: Deactivated successfully.
Sep 10 15:48:19 sv1 systemd[1]: Stopped nginx.service - A high performance web server and a reverse proxy server.
Sep 10 15:48:20 sv1 systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Sep 10 15:48:20 sv1 systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.
Sep 10 15:48:20 sv1 systemd[1]: Stopping nginx.service - A high performance web server and a reverse proxy server...
Sep 10 15:48:20 sv1 systemd[1]: nginx.service: Deactivated successfully.
Sep 10 15:48:20 sv1 systemd[1]: Stopped nginx.service - A high performance web server and a reverse proxy server.
Sep 10 15:48:20 sv1 systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Sep 10 15:48:20 sv1 systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.
Sep 10 15:48:20 sv1 systemd[1]: Reloading nginx.service - A high performance web server and a reverse proxy server...
Sep 10 15:48:20 sv1 nginx[2307]: 2026/09/10 15:48:20 [notice] 2307#2307: signal process started
Sep 10 15:48:20 sv1 systemd[1]: Reloaded nginx.service - A high performance web server and a reverse proxy server.

自動起動の設定

start は「今すぐ起動する」、enable は「次回のOS起動時に起動する」設定です。 両者は独立しているため、片方だけを行うこともできます。

コマンド動作
sudo systemctl enable [SERVICE]自動起動を有効にする(今は起動しない)
sudo systemctl disable [SERVICE]自動起動を無効にする(今は停止しない)
sudo systemctl enable --now [SERVICE]自動起動を有効にして、同時に起動する
sudo systemctl disable --now [SERVICE]自動起動を無効にして、同時に停止する

disable を実行しても、動作中のサービスはそのまま動き続けます。

自動起動の無効化 実行例
kazulog@sv1:~$ sudo systemctl disable nginx
Synchronizing state of nginx.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install disable nginx
Removed '/etc/systemd/system/multi-user.target.wants/nginx.service'.
kazulog@sv1:~$ systemctl is-enabled nginx
disabled
kazulog@sv1:~$ systemctl is-active nginx
active
kazulog@sv1:~$

OS を再起動すると、disabled のサービスは起動しません。

再起動後の状態 実行例
kazulog@sv1:~$ systemctl is-enabled nginx
disabled
kazulog@sv1:~$ systemctl is-active nginx
inactive
kazulog@sv1:~$ systemctl status nginx --no-pager -l | head -4 | cat
○ nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; preset: enabled)
     Active: inactive (dead)
       Docs: man:nginx(8)

enable --now を使うと、自動起動の有効化と起動を1コマンドで行えます。

自動起動の有効化と起動 実行例
kazulog@sv1:~$ sudo systemctl enable --now nginx
Synchronizing state of nginx.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable nginx
Created symlink '/etc/systemd/system/multi-user.target.wants/nginx.service''/usr/lib/systemd/system/nginx.service'.
kazulog@sv1:~$ systemctl is-enabled nginx
enabled
kazulog@sv1:~$ systemctl is-active nginx
active

自動起動が有効なサービスの一覧は list-unit-files で確認できます。

自動起動が有効なサービスの一覧表示 実行例
kazulog@sv1:~$ systemctl list-unit-files --type=service --state=enabled --no-pager | head -12
UNIT FILE                              STATE   PRESET
apparmor.service                       enabled enabled
apport.service                         enabled enabled
blk-availability.service               enabled enabled
chrony.service                         enabled enabled
cloud-config.service                   enabled enabled
cloud-final.service                    enabled enabled
cloud-init-local.service               enabled enabled
cloud-init-main.service                enabled enabled
cloud-init-network.service             enabled enabled
console-setup.service                  enabled enabled
cron.service                           enabled enabled

サービスを起動できないようにする(mask)

mask はユニットを /dev/null へのシンボリックリンクに置き換え、手動でも起動できない状態にします。パッケージの更新などで意図せず起動されるのを防ぎたい場合に使います。

サービスのマスクと解除コマンド
sudo systemctl mask [SERVICE]
sudo systemctl unmask [SERVICE]
サービスのマスクと解除 実行例
kazulog@sv1:~$ sudo systemctl mask nginx
Created symlink '/etc/systemd/system/nginx.service''/dev/null'.
kazulog@sv1:~$ systemctl is-enabled nginx
masked
kazulog@sv1:~$ sudo systemctl start nginx
Failed to start nginx.service: Unit nginx.service is masked.
kazulog@sv1:~$ sudo systemctl unmask nginx
Removed '/etc/systemd/system/nginx.service'.
kazulog@sv1:~$ sudo systemctl start nginx
kazulog@sv1:~$ systemctl is-active nginx
active
kazulog@sv1:~$

起動に失敗したサービスの調べ方

失敗しているサービスは systemctl --failed で一覧できます。

失敗しているサービスの一覧表示コマンド
systemctl --failed
設定ファイルに誤りがある状態で再起動した 実行例
kazulog@sv1:~$ sudo systemctl restart 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.
kazulog@sv1:~$ systemctl is-active nginx
failed
kazulog@sv1:~$ systemctl --failed --no-pager
  UNIT          LOAD   ACTIVE SUB    DESCRIPTION
● nginx.service loaded failed failed A high performance web server and a reverse proxy server

Legend: LOAD   → Reflects whether the unit definition was properly loaded.
        ACTIVE → The high-level unit activation state, i.e. generalization of SUB.
        SUB    → The low-level unit activation state, values depend on unit type.

1 loaded units listed.
kazulog@sv1:~$ systemctl status nginx --no-pager -l | head -14 | cat
× nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Thu 2026-09-10 15:49:41 JST; 151ms ago
   Duration: 11.927s
 Invocation: 87d8bbb0ef24470d85db158ae79b23bd
       Docs: man:nginx(8)
    Process: 1911 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE)
   Mem peak: 1.7M
        CPU: 16ms

Sep 10 15:49:41 sv1 systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Sep 10 15:49:41 sv1 nginx[1911]: 2026/09/10 15:49:41 [emerg] 1911#1911: unknown directive "brokendirective" in /etc/nginx/conf.d/broken.conf:1
Sep 10 15:49:41 sv1 nginx[1911]: nginx: configuration file /etc/nginx/nginx.conf test failed
Sep 10 15:49:41 sv1 systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE
kazulog@sv1:~$

確認する箇所は次の3つです。

確認する箇所内容
Active: の行failed (Result: exit-code) と、失敗した時刻
Process: の行どのプロセスが失敗したか(status=1/FAILURE が終了コード)
末尾のログ失敗の原因。上の例では nginx が unknown directive "brokendirective" を出している

-p err を付けると、エラー以上のログだけを抽出できます。

エラーログのみを抽出する 実行例
kazulog@sv1:~$ sudo journalctl -u nginx -p err --since '2 min ago' --no-pager | cat
Sep 10 15:49:41 sv1 systemd[1]: Failed to start nginx.service - A high performance web server and a reverse proxy server.
kazulog@sv1:~$

原因を取り除いてから restart すると復旧します。

復旧の確認 実行例
kazulog@sv1:~$

サービスの設定を変更する(ドロップイン)

パッケージが提供するユニットファイル(/usr/lib/systemd/system/ 配下)は直接編集しません。/etc/systemd/system/[SERVICE].service.d/.conf ファイルを置いて設定を上書きします。 変更後は daemon-reload で読み込みます。

ドロップインの作成と反映コマンド
sudo systemctl edit [SERVICE]
sudo systemctl daemon-reload
sudo systemctl restart [SERVICE]

systemctl edit はエディタを開き、保存すると override.conf を作成します。ファイルを直接作成しても同じです。

ドロップインの作成と反映 実行例
kazulog@sv1:~$ sudo mkdir -p /etc/systemd/system/nginx.service.d
kazulog@sv1:~$ printf '[Service]\nRestart=on-failure\nRestartSec=5\n' | sudo tee /etc/systemd/system/nginx.service.d/override.conf
[Service]
Restart=on-failure
RestartSec=5
kazulog@sv1:~$ sudo systemctl daemon-reload
kazulog@sv1:~$ sudo systemctl restart nginx
kazulog@sv1:~$ systemctl cat nginx | tail -6
WantedBy=multi-user.target

# /etc/systemd/system/nginx.service.d/override.conf
[Service]
Restart=on-failure
RestartSec=5
kazulog@sv1:~$ systemctl show nginx -p Restart -p RestartUSec
Restart=on-failure
RestartUSec=5s

systemctl cat で、元のユニットファイルとドロップインを合わせた内容を確認できます。上の例では、サービスが異常終了したときに5秒後に自動で再起動する設定を追加しています。

daemon-reload を忘れると設定は反映されません。反映されたかどうかは systemctl show [SERVICE] -p [PROPERTY] で個別の値を確認するのが確実です。

ログを確認する(journalctl)

systemd のログは journalctl で確認します。よく使うオプションは次のとおりです。

オプション内容
-u [SERVICE]指定したサービスのログだけを表示
-n [N]末尾のN行だけを表示
-f追記されるログを表示し続ける(Ctrl+C で終了)
-b今回のOS起動以降のログ。-b -1 は前回の起動時
--since / --until期間を指定("10 min ago""2026-09-10 15:00" など)
-p [PRIORITY]優先度で絞り込み(errwarninginfo など)
--no-pagerページャを使わずそのまま出力
サービスのログを確認するコマンド
sudo journalctl -u [SERVICE] -n 20
末尾5行の表示 実行例
kazulog@sv1:~$ sudo journalctl -u nginx -n 5 --no-pager | cat
Sep 10 15:49:52 sv1 systemd[1]: Stopping nginx.service - A high performance web server and a reverse proxy server...
Sep 10 15:49:52 sv1 systemd[1]: nginx.service: Deactivated successfully.
Sep 10 15:49:52 sv1 systemd[1]: Stopped nginx.service - A high performance web server and a reverse proxy server.
Sep 10 15:49:52 sv1 systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Sep 10 15:49:52 sv1 systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.
kazulog@sv1:~$

期間を指定する場合は --since--until を組み合わせます。該当するログが無い場合は -- No entries -- と表示されます。

期間を指定した表示 実行例
kazulog@sv1:~$ sudo journalctl -u nginx --since '10 min ago' --until '5 min ago' --no-pager | head -5 | cat
-- No entries --
kazulog@sv1:~$

-b は今回の起動以降のログに限定します。前回の起動時のログは -b -1 で参照でき、再起動の前に何が起きていたかを確認できます

前回起動時のログの末尾 実行例
kazulog@sv1:~$ sudo journalctl -b -1 --no-pager | tail -4 | cat
Sep 10 15:48:37 sv1 systemd-shutdown[1]: Syncing filesystems and block devices.
Sep 10 15:48:37 sv1 systemd-shutdown[1]: Sending SIGTERM to remaining processes...
Sep 10 15:48:37 sv1 systemd-journald[588]: Received SIGTERM from PID 1 (systemd-shutdow).
Sep 10 15:48:37 sv1 systemd-journald[588]: Journal stopped
kazulog@sv1:~$

記録されている起動の一覧は --list-boots で確認します。

起動の一覧表示 実行例
kazulog@sv1:~$ sudo journalctl --list-boots --no-pager | cat
IDX BOOT ID                          FIRST ENTRY                 LAST ENTRY
 -4 86eabfe1a02f41f495461c35e41ba1e1 Thu 2026-09-10 13:29:59 JST Thu 2026-09-10 13:35:24 JST
 -3 97c1d18c29b44f12b3d72adc2fa94bb7 Thu 2026-09-10 13:56:38 JST Thu 2026-09-10 13:57:45 JST
 -2 97239a4ef00a4330845686247b03fce9 Thu 2026-09-10 14:39:13 JST Thu 2026-09-10 15:00:27 JST
 -1 bb94a595d49d44859c82f7293889dc8f Thu 2026-09-10 15:46:55 JST Thu 2026-09-10 15:48:37 JST
  0 a06471efe1864ea8b5885524c0299227 Thu 2026-09-10 15:48:57 JST Thu 2026-09-10 15:50:15 JST
kazulog@sv1:~$

システム全体のエラーだけを見たい場合は -p err を使います。

今回の起動以降のエラー 実行例
kazulog@sv1:~$ sudo journalctl -p err -b --no-pager | cat
Sep 10 15:49:41 sv1 systemd[1]: Failed to start nginx.service - A high performance web server and a reverse proxy server.
kazulog@sv1:~$

ログの保存先と使用量

/var/log/journal/ が存在する場合、ログはディスクに保存され再起動後も残ります。存在しない場合は /run/log/journal/(メモリ上)となり、再起動で消えます。使用量は --disk-usage で確認します。

ログの保存先と使用量の確認 実行例
kazulog@sv1:~$ journalctl --disk-usage
Archived and active journals take up 72M in the file system.
kazulog@sv1:~$ ls -d /var/log/journal/*
/var/log/journal/435660ecd769447c8d3e12c234a35841

上の例ではディスクに保存される設定になっており、--list-boots に過去の起動が並んでいることからも再起動をまたいで残っていることが分かります。

検証環境と実行ログ

本記事の実行例は、CML 上の Ubuntu 26.04 LTS Server(systemd 259、nginx 1.28.3)で採取したものです。各手順の実行ログを以下からダウンロードできます。

手順実行ログ
初期状態(サービス一覧・ログの保存先)log
nginx のインストールlog
サービスの状態確認log
起動・停止・再起動・リロードlog
自動起動の無効化と再起動log
再起動後の状態log
自動起動の有効化(enable –now)log
起動に失敗した場合の調査log
ドロップインによる設定変更log
journalctl の各種オプションlog
mask と unmasklog

参考リンク

systemd documentation: systemctl

関連記事

Ubuntu 公式ページ