サービスの操作とログ確認の方法
Ubuntu 26.04 LTS Server でサービス(systemd のユニット)を起動・停止し、自動起動を設定し、journalctl でログを確認する手順を解説します。
本記事の実行例は、操作対象のサービスとして nginx を使用しています。systemd のバージョンは 259 です。
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=runningkazulog@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-active と is-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-active や status で結果を確認してください。
各操作は 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 --failedkazulog@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=5ssystemctl 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] | 優先度で絞り込み(err、warning、info など) |
--no-pager | ページャを使わずそのまま出力 |
sudo journalctl -u [SERVICE] -n 20kazulog@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 と unmask | log |
参考リンク
systemd documentation: systemctl
関連記事
- ホスト名の変更 Ubuntu 26.04 LTS Server
- Ubuntu 26.04 LTS Server システム最適化 apt update/upgrade
- タイムゾーンの日本時間(JST)への変更 Ubuntu 26.04 LTS Server
- Ubuntu 26.04 LTS Server のユーザー作成と sudo 権限の設定
- Ubuntu 26.04 LTS Server の SSH サーバー設定(公開鍵認証)
- Ubuntu 26.04 LTS Server のサービス管理(systemctl)とログ確認(journalctl)
- Ubuntu 26.04 LTS Server の自動更新設定(unattended-upgrades)
- neovim 公式サイトから最新バージョンをインストールする手順 Ubuntu 26.04 LTS Server
- Ubuntu 26.04 LTS Server ネットワークの設定