手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 systemd の基本 – unit / target / timer とサービス管理を理解する

関連する記事

Ubuntu 26.04 では、サービス起動、ログ、タイマー、マウント、起動順序の多くを systemd が管理します。systemctl の操作だけを覚えるのではなく、unit、target、timer、依存関係、journal の関係を押さえると、設定反映や障害調査がしやすくなります。

この記事では、systemd の基本概念と、サーバー管理でよく使う確認コマンドをまとめます。サービスの起動停止だけでなく、自動起動、失敗 unit、unit 定義、依存関係、timer、ログ確認まで扱います。

systemd の基本要素

  • service: daemon や常駐サービスを管理する unit です。
  • target: 複数の unit をまとめる起動状態です。
  • timer: 時刻や間隔を条件に service を起動する unit です。
  • socket: ソケット待ち受けを契機に service を起動する unit です。
  • mount: マウントポイントを管理する unit です。

systemd の状態を確認する

まず systemd 自体の状態と、失敗している unit がないかを確認します。

systemctl is-system-running
systemctl --failed
systemctl list-units --state=failed

サービス一覧を確認する

稼働中のサービス、すべてのサービス、自動起動設定を分けて確認します。

systemctl list-units --type=service
systemctl list-units --type=service --all
systemctl list-unit-files --type=service

サービス状態を確認する

active は現在動いているか、enabled は起動時に自動起動するかを示します。意味が違うため、両方を確認します。

systemctl status ssh.service --no-pager
systemctl is-active ssh.service
systemctl is-enabled ssh.service

サービスを操作する

サービスの起動、停止、再起動、reload を行います。設定変更後に reload で足りるか restart が必要かはサービスごとに異なります。

sudo systemctl start ssh.service
sudo systemctl stop ssh.service
sudo systemctl restart ssh.service
sudo systemctl reload ssh.service

自動起動を管理する

再起動後も起動させたいサービスは enable します。今すぐ起動も合わせる場合は enable --now を使います。

sudo systemctl enable ssh.service
sudo systemctl enable --now ssh.service
sudo systemctl disable ssh.service
systemctl is-enabled ssh.service

unit 定義を確認する

実際に読み込まれている unit 定義、drop-in、実行コマンドを確認します。設定ファイルの場所を推測せず、systemd が見ている定義を確認します。

systemctl cat ssh.service
systemctl show ssh.service -p FragmentPath -p DropInPaths -p ExecStart
systemctl status ssh.service --no-pager

unit ファイルを配置する場所

ディストリビューション提供の unit は主に /usr/lib/systemd/system、管理者が追加する unit は /etc/systemd/system に置きます。既存 unit の上書きは drop-in で分けるのが基本です。

systemctl show ssh.service -p FragmentPath -p DropInPaths
ls -ld /etc/systemd/system
ls -ld /usr/lib/systemd/system

drop-in 設定を確認する

unit の一部だけを上書きする場合は drop-in を使います。反映後は daemon-reload とサービスの restart または reload を行います。

sudo systemctl edit ssh.service
sudo systemctl daemon-reload
systemctl cat ssh.service
sudo systemctl restart ssh.service

依存関係を確認する

サービスが起動しない場合は、依存する unit、依存される unit、起動順序を確認します。

systemctl list-dependencies ssh.service
systemctl list-dependencies --reverse ssh.service
systemctl show ssh.service -p After -p Before -p Requires -p Wants

target を確認する

target は起動状態のまとまりです。通常のサーバーでは multi-user.target がよく使われます。

systemctl get-default
systemctl list-units --type=target
systemctl list-dependencies multi-user.target

timer を確認する

cron ではなく systemd timer で定期実行される処理もあります。apt の自動処理などは timer と service の組み合わせで動きます。

systemctl list-timers --all
systemctl status apt-daily.timer --no-pager
systemctl cat apt-daily.timer

socket を確認する

一部のサービスは socket unit によって必要時に起動されます。サービスだけでなく socket の状態も確認します。

systemctl list-sockets --all
systemctl status systemd-journald.socket --no-pager

ログを確認する

systemd 管理のサービスログは journalctl で確認します。今回起動中、直近、追跡表示を使い分けます。

journalctl -u ssh.service -b --no-pager
journalctl -u ssh.service -n 100 --no-pager
journalctl -u ssh.service -f

設定変更後の反映

unit ファイルや drop-in を変更した時は daemon-reload が必要です。その後、対象サービスに reload または restart を行います。

sudo systemctl daemon-reload
sudo systemctl restart ssh.service
systemctl status ssh.service --no-pager
journalctl -u ssh.service -n 50 --no-pager

再起動後の確認

設定が一時的に動いただけで終わっていないか、再起動後の状態も確認します。

systemctl --failed
systemctl is-system-running
systemctl is-enabled ssh.service
systemctl status ssh.service --no-pager

確認項目

  • 対象サービスが active かどうか。
  • 再起動後も必要なサービスが enabled かどうか。
  • 失敗 unit が残っていないか。
  • unit 定義と drop-in が想定どおり読み込まれているか。
  • timer や socket から起動される unit ではないか。
  • unit 変更後に daemon-reload を実行しているか。

まとめ

Ubuntu 26.04 の systemd 管理では、サービス操作だけでなく、unit 定義、依存関係、target、timer、socket、journal を合わせて確認します。systemctl status だけで判断せず、is-activeis-enabledsystemctl catjournalctl -u まで見ると、起動失敗や設定反映漏れを切り分けやすくなります。

関連する記事
Ubuntu 26.04 systemd の基本 – unit / target / timer とサービス管理を理解する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る