Я был пользователем Ubuntu некоторое время, и на работе у нас есть много виртуальных серверов Ubuntu , каждый из которых работает Ubuntu 14.04 LTS
для развертывания наших веб-приложений, баз данных и других инструментов.
В настоящее время я изучаю Ubuntu 16.04 LTS
настольные системы и серверы, чтобы иметь возможность обновлять наши производственные серверы в ближайшем будущем, не вызывая проблем.
Начиная с Ubuntu 15.04 init
и upstart
были заменены Systemd
, так что я тоже изучаю Systemd.
Я заметил, что мой компьютер для разработки под управлением Ubuntu 16.04 Desktop Edition имеет graphical.target
цель systemd по умолчанию, что логично.
Но затем я заметил, что тестовый сервер под управлением Ubuntu 16.04 Server Edition также использует graphical.target
в качестве цели systemd по умолчанию.
$ systemctl get-default
graphical.target
Так что я в замешательстве. На сервере нет графического слоя, так как получается, что целью по умолчанию является graphical.target
?
Редактировать # 0
Как Ринзвинд предложил в комментариях, я посмотрел на цель, чтобы увидеть, активна она или нет ...
и ответ ДА:
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.
Так что я немного запутался.
Редактировать # 1
Ответ Марка Стосберга указывает на тот факт, что он display-manager.service
является частью дерева зависимостей graphical.target
на его собственном сервере 16.04, и добавляет, что на его компьютере не установлен и не работает диспетчер отображения. Я тоже смотрел на это, и действительно, на моем сервере эта зависимость есть:
admin@server1604:~$ systemctl list-dependencies graphical.target
graphical.target
● ├─accounts-daemon.service
● ├─apache2.service
● ├─apport.service
● ├─display-manager.service
...
И у этой цели есть красный круг слева, где у большинства других зависимостей есть зеленый.
И на этот раз результат соответствует:
admin@server16.04:~$ systemctl status display-manager.service
● display-manager.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
Но вот еще одна странная вещь: в моем настольном выпуске display-manager.service
это не зависимость graphical.target
:
me@desktop16.04:~ $ systemctl list-dependencies graphical.target | grep display
me@desktop16.04:~ $
Но я даже нашел альтернативу, потому что я запускаю Ubuntu-Gnome
с lightdm
заменой оконного менеджера по умолчанию:
me@desktop16.04:~ $ systemctl list-dependencies graphical.target | grep lightdm
● ├─lightdm.service
graphical.target
активен?Ответы:
Несмотря на название цели, на Ubuntu Server 16.04 ничего графически не работает. Вы можете эту команду, чтобы проверить и сравнить его с вашим рабочим столом, если вам нравится:
На моем сервере Ubuntu 16.04 я вижу, что цели зависят от "display-manager.service", но менеджер дисплеев не установлен или не работает.
Я ожидаю, что серверы Ubuntu настроены таким образом для некоторой согласованности, хотя я согласен, что это сбивает с толку.
источник
Из руководства RedHat :
Поэтому его установка не является неправильной, поскольку он не активирует диспетчер отображения, когда служба, которая обрабатывает службу отображения, не установлена.
Для сервера вы можете установить его,
multi-user.target
но он не нужен. Похоже, вы попадаете на уровень запуска 4, если вы делаете, и уровень запуска 5, когда вы этого не делаете.источник
Рассмотрим более подробно первый уровень древовидной зависимости цели
graphical.target
:сравнивая его с первым уровнем
multi-user.target
:Я заметил , что , если мы удалим отключенные цели в
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
, нет ли необходимости во всем этом. Это звучит достаточно странно.Но после этого сокращения он остается одной услугой
accounts-daemon.service
, как отметил Ринзвинд в своем комментарии .Таким образом, мы можем предположить, что
graphical.target
это необходимо для загрузкиaccounts-daemon.service
.Тем не менее, в этом случае это снова странно, потому что, я думаю, было бы более разумно создать для этой цели специальную цель, возможно, что-то похожее
accounts.target
или любой правильный термин для ее описания. В любом случае, вероятно, у разработчиков Canonical были свои причины так думать.Но мне любопытно узнать его причины.
источник