インフラ作業支援ラボInfra Support Lab← ガイド一覧← 戻る

systemdのdefault.targetとmulti-user.targetの違い|確認・変更方法

default.targetは「起動時に最初に目指す既定のtarget」、multi-user.targetは「複数ユーザー・主要サービスが利用できる非GUI中心のtarget」です。両者は同じものではなく、default.targetmulti-user.targetを指している環境があります。

このページで分かること

  • default.targetとmulti-user.targetの役割の違い
  • 現在のデフォルトtargetの安全な確認方法
  • set-defaultで何が変わるか
  • isolateを安易に使わない方がよい理由

先に結論

default.targetは通常、multi-user.targetまたはgraphical.targetへのエイリアスです。まずsystemctl get-defaultで確認し、変更前には対象targetの存在と依存関係を確認します。

Unit設定もあわせて確認する

WantedByや依存関係を含むUnitファイルは、適用前にブラウザ上で確認できます。

systemd Unitをレビュー

default.targetとmulti-user.targetの違い

項目default.targetmulti-user.target
役割起動時にsystemdが到達しようとする既定target複数ユーザー利用と主要なシステムサービスをまとめるtarget
実体一般に別targetへのエイリアス(symlink)実際のtarget unit
よくある向き先multi-user.target または graphical.targetサーバー系サービスなどを依存関係で取り込む
確認systemctl get-defaultsystemctl list-dependencies multi-user.target
ポイント: default.targetmulti-user.targetを「同義語」と考えないことが重要です。サーバーではdefault.targetがmulti-user.targetを指すことがありますが、GUI環境ではgraphical.targetを指す構成も一般的です。

現在のdefault.targetを確認する

まず変更せず、現在の設定を確認します。

systemctl get-default systemctl status default.target --no-pager readlink -f /etc/systemd/system/default.target

systemctl get-defaultは、default.targetがどのtargetへエイリアスされているかを確認する基本コマンドです。readlinkは実ファイル上のリンク先確認に使えますが、ディストリビューションや配置によって見え方が異なるため、まずsystemctlの結果を基準にします。

変更前の記録: 作業前にsystemctl get-defaultの結果を控えておけば、切り戻し先を明確にできます。

multi-user.targetで何が起動対象になるか確認する

multi-user.target自体がサービスを直接実行するのではなく、依存関係を通じて複数のUnitを取り込みます。

systemctl list-dependencies multi-user.target systemctl list-dependencies --reverse multi-user.target systemctl status multi-user.target --no-pager

特定サービスが通常起動へ紐付いているか確認したい場合は、is-enabledとWantedBy側のリンクも確認します。

systemctl is-enabled example.service systemctl show example.service -p UnitFileState -p FragmentPath ls -l /etc/systemd/system/multi-user.target.wants/
関連: WantedBy=multi-user.targetsystemctl enableの関係は、WantedBy=multi-user.targetの個別ガイドで詳しく確認できます。

デフォルトtargetを変更する

恒久的なデフォルトtargetの変更にはsystemctl set-defaultを使います。通常はdefault.targetのエイリアス先が変更され、次回以降の起動時に影響します。

# 変更前 systemctl get-default systemctl status multi-user.target --no-pager # 変更 sudo systemctl set-default multi-user.target # 変更後 systemctl get-default readlink -f /etc/systemd/system/default.target
注意: リモート作業では、target変更によってネットワークやログインに必要なUnitが外れないか事前確認が必要です。単に「GUIを消したい」などの理由だけで本番サーバーへ即適用せず、依存関係と切り戻し方法を確認してください。

元へ戻す場合は、作業前に記録したtargetへ戻します。

sudo systemctl set-default graphical.target systemctl get-default

systemctl isolateはset-defaultと別物

set-defaultは次回以降の既定targetを変更します。一方、systemctl isolate TARGETは現在のシステムをそのtargetへ切り替えようとし、対象targetに不要なUnitを停止することがあります。

コマンド主な影響注意点
systemctl set-default TARGET次回以降の起動時の既定target変更後にget-defaultで確認
systemctl isolate TARGET現在稼働中のUnit構成をtargetへ切替サービス停止や接続断につながる可能性
リモート環境では特に注意: isolateは現在のセッションに影響する可能性があります。SSH経由の本番作業では、必要Unit・コンソールアクセス・復旧手段を確認せず実行しない方が安全です。

実行前チェック

  1. 現在値をsystemctl get-defaultで記録する
  2. 変更先targetが存在するかsystemctl statusで確認する
  3. list-dependenciesで必要サービスが含まれるか確認する
  4. リモート接続ならSSH・ネットワーク維持への影響を確認する
  5. set-default後に再度get-defaultで確認する
  6. 切り戻し用の元target名を残す
systemctl get-default systemctl status multi-user.target --no-pager systemctl list-dependencies multi-user.target # 問題なければ変更 sudo systemctl set-default multi-user.target systemctl get-default
このページの判断軸: 「default.targetは何を指しているか」「変更先targetに必要なUnitが含まれるか」「今すぐ切り替える必要が本当にあるか」の3点を確認してから変更します。
multi-user.targetを一言で:ネットワークを含む通常のマルチユーザー環境を表す代表的なtargetです。どのUnitが取り込まれるかは systemctl list-dependencies multi-user.target で実環境を確認します。

関連ガイド

公式ドキュメント

Unitファイルを適用前に確認する

依存関係、自動起動、実行ユーザー、再起動設定の注意点をブラウザ内で確認できます。

systemd Unitをレビュー