Advanced Ubuntu Administration and Management Best Practices
Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
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.serviceunit 定義を確認する
実際に読み込まれている unit 定義、drop-in、実行コマンドを確認します。設定ファイルの場所を推測せず、systemd が見ている定義を確認します。
systemctl cat ssh.service
systemctl show ssh.service -p FragmentPath -p DropInPaths -p ExecStart
systemctl status ssh.service --no-pagerunit ファイルを配置する場所
ディストリビューション提供の 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/systemdrop-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 Wantstarget を確認する
target は起動状態のまとまりです。通常のサーバーでは multi-user.target がよく使われます。
systemctl get-default
systemctl list-units --type=target
systemctl list-dependencies multi-user.targettimer を確認する
cron ではなく systemd timer で定期実行される処理もあります。apt の自動処理などは timer と service の組み合わせで動きます。
systemctl list-timers --all
systemctl status apt-daily.timer --no-pager
systemctl cat apt-daily.timersocket を確認する
一部のサービスは 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-active、is-enabled、systemctl cat、journalctl -u まで見ると、起動失敗や設定反映漏れを切り分けやすくなります。

