私はしばらくの間Ubuntuユーザーでしたが、職場では多くのUbuntu VM serversがあり、すべてがUbuntu 14.04 LTS
を実行してWebアプリケーション、データベースをデプロイしています、およびその他のツール。
私は現在、Ubuntu 16.04 LTS
、デスクトップおよびサーバーを研究しており、近い将来に問題を引き起こすことなく運用サーバーをアップグレードできるようにしています。
Ubuntu 15.04以降、init
とupstart
はSystemd
に置き換えられているため、Systemdも勉強しています。
Ubuntu 16.04 Desktopエディションを実行している私の開発コンピューターは、デフォルトのsystemdターゲットとしてgraphical.target
を持っていることに気付きました。これは論理的です。
しかし、Ubuntu 16.04 Serverエディションを実行しているテストサーバーも、デフォルトのsystemdターゲットとしてgraphical.target
を使用していることに気付きました。
$ systemctl get-default
graphical.target
だから私は混乱しています。サーバーにはグラフィカルレイヤーがないため、デフォルトのターゲットがgraphical.target
になっているのはどうですか。
コメントで提案されたRinzwindのように、ターゲットがアクティブかどうかを確認するためにターゲットを調べました...
応答はYESです。
admin@server1604:~$ systemctl get-default
graphical.target
admin@server1604:~$ systemctl status graphical.target
● graphical.target - Graphical Interface
Loaded: loaded (/lib/systemd/system/graphical.target; static; vendor preset: enabled)
Active: active since jeu. 2016-10-13 16:03:18 CEST; 46min ago
Docs: man:systemd.special(7)
oct. 13 16:03:18 fdea systemd[1]: Reached target Graphical Interface.
だから私はもう少し混乱しています。
マーク・ストスバーグの答えは、display-manager.service
がそれ自身の16.04サーバー上のgraphical.target
の依存ツリーの一部であり、ディスプレイマネージャーがマシンにインストールまたは実行されていないことを付け加えています。私もそれを見ましたが、実際、私のサーバーにはこの依存関係があります。
admin@server1604:~$ systemctl list-dependencies graphical.target
graphical.target
● ├─accounts-daemon.service
● ├─Apache2.service
● ├─apport.service
● ├─display-manager.service
...
そして、このターゲットの左側には赤い円があり、他の依存関係のほとんどには緑色の依存関係があります。
そして、今回は一貫した結果です:
[email protected]:~$ systemctl status display-manager.service
● display-manager.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
しかし、もう1つ奇妙なことがあります。デスクトップ版では、display-manager.service
はgraphical.target
の依存関係ではありません。
[email protected]:~ $ systemctl list-dependencies graphical.target | grep display
[email protected]:~ $
しかし、デフォルトのウィンドウマネージャを置き換えてlightdm
でUbuntu-Gnome
を実行するため、別の方法も見つけました。
[email protected]:~ $ systemctl list-dependencies graphical.target | grep lightdm
● ├─lightdm.service
ターゲットgraphical.target
のツリー依存関係の最初のレベルをさらに詳細に検査します。
admin@server1604:~$ systemctl list-dependencies graphical.target
graphical.target
● ├─accounts-daemon.service
● ├─Apache2.service
● ├─apport.service
● ├─display-manager.service (disabled)
● ├─grub-common.service
● ├─irqbalance.service
● ├─mdadm.service
● ├─ondemand.service
● ├─sysstat.service
● ├─systemd-update-utmp-runlevel.service (disabled)
● ├─ureadahead.service (disabled)
● └─multi-user.target
multi-user.target
の最初のレベルと比較します:
[email protected]:~$ systemctl list-dependencies multi-user.target
multi-user.target
● ├─Apache2.service
● ├─apport.service
● ├─atd.service
● ├─cron.service
● ├─dbus.service
● ├─grub-common.service
● ├─irqbalance.service
● ├─lxcfs.service
● ├─lxd-containers.service
● ├─mdadm.service
● ├─networking.service
● ├─ondemand.service
● ├─open-vm-tools.service
...
graphical.target
ツリー(display-manager.service
、systemd-update-utmp-runlevel.service
、ureadahead.service
)の無効なターゲットを削除すると、残りのほとんどすべてがターゲットになります。
Apache2.service
apport.service
grub-common.service
grub-common.service
irqbalance.service
mdadm.service
ondemand.service
sysstat.service
multi-user.target
の依存関係ツリーの最初のレベルに既に含まれています。
graphical.target
はmulti-user.target
に依存しているため、この事実について再度質問する必要がありますが、このすべての必要はありません。奇妙に聞こえます。
しかし、この削減後も、 Rinzwindがコメントで指摘した のように、accounts-daemon.service
という1つのサービスのままです。
したがって、graphical.target
をロードするにはaccounts-daemon.service
が必要であると想定できます。
ただし、その場合は奇妙なことになります。その目的のために、おそらくaccounts.target
またはそれを説明する正しい用語のような専用のターゲットを作成する方が賢明だからです。とにかく、おそらくCanonicalの開発者には、そのように考える理由がありました。
しかし、その理由を知りたいと思っています。
ターゲットの名前にもかかわらず、Ubuntu Server 16.04で実行されるグラフィカルなものはありません。必要に応じて、このコマンドでデスクトップと確認および比較できます。
systemctl list-dependencies graphical.target
Ubuntu 16.04サーバーでは、ターゲットは「display-manager.service」に依存していますが、ディスプレイマネージャーがインストールまたは実行されていません。
混乱を招くことに同意しますが、Ubuntuサーバーが何らかの一貫性のためにこのように設定されることを期待しています。
redhat manual から:
たとえば、グラフィカルセッションの開始に使用されるグラフィカルターゲットユニットは、GNOMEディスプレイマネージャー(gdm.service)やアカウントサービス(accounts-daemon.service)などのシステムサービスを開始し、マルチユーザーをアクティブにします。ターゲットユニット。同様に、multi-user.targetユニットは、NetworkManager(NetworkManager.service)やD-Bus(dbus.service)などの他の重要なシステムサービスを開始し、basic.targetという名前の別のターゲットユニットをアクティブにします。
したがって、表示サービスを処理するサービスが設定されていないときに表示マネージャーをアクティブにしないため、設定するのは間違っていません。
サーバーの場合、multi-user.target
に設定できますが、必須ではありません。実行するとランレベル4になり、実行しないとランレベル5になります。
Runlevel Target Units Description
0 runlevel0.target, poweroff.target Shut down and power off the system.
1 runlevel1.target, rescue.target Set up a rescue Shell.
2 runlevel2.target, multi-user.target Set up a non-graphical multi-user system.
3 runlevel3.target, multi-user.target Set up a non-graphical multi-user system.
4 runlevel4.target, multi-user.target Set up a non-graphical multi-user system.
5 runlevel5.target, graphical.target Set up a graphical multi-user system.
6 runlevel6.target, reboot.target Shut down and reboot the system.