Od jakiegoś czasu jestem użytkownikiem Ubuntu, aw pracy mamy wiele serwerów VM Ubuntu , z których wszystkie działają w Ubuntu 14.04 LTS
celu wdrażania naszych aplikacji internetowych, baz danych i innych narzędzi.
Obecnie studiuję Ubuntu 16.04 LTS
, na komputerze i serwerze, aby móc w niedalekiej przyszłości zaktualizować nasze serwery produkcyjne bez powodowania problemów.
Od wersji Ubuntu 15.04 init
i upstart
zostały zastąpione przez Systemd
, dlatego też studiuję Systemd.
Zauważyłem, że mój komputer programistyczny z systemem Ubuntu 16.04 Desktop Edition ma graphical.target
domyślny systemowy cel, co jest logiczne.
Ale potem zauważyłem, że serwer testowy z systemem Ubuntu 16.04 Edition Edition również używa graphical.target
jako domyślnego systemowego celu.
$ systemctl get-default
graphical.target
Więc jestem zmieszany. Serwer nie ma żadnej warstwy graficznej, więc jak to jest, że domyślnym celem jest graphical.target
?
Edytuj # 0
Jak sugerował Rinzwind w komentarzach, spojrzałem na cel, aby zobaczyć, czy jest aktywny, czy nie ...
a odpowiedź brzmi TAK:
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.
Więc jestem trochę bardziej zdezorientowany.
Edytuj nr 1
Odpowiedź Marka Stosberga wskazuje na fakt, że display-manager.service
jest ona częścią drzewa zależności graphical.target
na własnym serwerze 16.04 i dodaje, że żaden menedżer wyświetlania nie jest zainstalowany ani uruchomiony na jego komputerze. Też na to spojrzałem i rzeczywiście na moim serwerze istnieje zależność:
admin@server1604:~$ systemctl list-dependencies graphical.target
graphical.target
● ├─accounts-daemon.service
● ├─apache2.service
● ├─apport.service
● ├─display-manager.service
...
Ten cel ma czerwone kółko po lewej stronie, a większość pozostałych zależności ma zielony.
I tym razem wynik jest spójny:
[email protected]:~$ systemctl status display-manager.service
● display-manager.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
Ale display-manager.service
jest jeszcze jedna dziwna rzecz: w moim wydaniu na komputery stacjonarne nie ma zależności graphical.target
:
[email protected]:~ $ systemctl list-dependencies graphical.target | grep display
[email protected]:~ $
Ale nawet znalazłem alternatywę, ponieważ biegnę Ubuntu-Gnome
z lightdm
zastąpieniem domyślnego menedżera okien:
[email protected]:~ $ systemctl list-dependencies graphical.target | grep lightdm
● ├─lightdm.service
graphical.target
aktywny?Odpowiedzi:
Pomimo nazwy celu, na Ubuntu Server 16.04 nie ma nic graficznego. Możesz to polecenie sprawdzić i porównać z pulpitem, jeśli chcesz:
Na moim serwerze Ubuntu 16.04 widzę, że cele zależą od „display-manager.service”, ale żaden menedżer ekranu nie jest zainstalowany ani uruchomiony.
Oczekuję, że serwery Ubuntu są ustawione w ten sposób dla pewnego rodzaju spójności, chociaż zgadzam się, że jest to mylące.
źródło
Z podręcznika redhat :
Dlatego ustawianie go nie jest błędem, ponieważ nie aktywuje menedżera wyświetlania, gdy usługa obsługująca usługę wyświetlania nie jest ustawiona.
W przypadku serwera można go ustawić,
multi-user.target
ale nie jest to konieczne. Wygląda na to, że skończysz na poziomie 4, jeśli to zrobisz, i na poziomie 5, jeśli nie.źródło
Sprawdzając bardziej szczegółowo pierwszy poziom zależności drzewa od celu
graphical.target
:porównanie z pierwszym poziomem
multi-user.target
:Zauważyłem, że jeśli usuniemy cele niepełnosprawnym w
graphical.target
drzewo (display-manager.service
,systemd-update-utmp-runlevel.service
,ureadahead.service
), prawie wszystkich pozostałych:apache2.service
apport.service
grub-common.service
grub-common.service
irqbalance.service
mdadm.service
ondemand.service
sysstat.service
są już uwzględnione na pierwszym poziomie drzewa zależności
multi-user.target
.Chociaż powinniśmy ponownie zapytać o ten fakt, ponieważ
graphical.target
zależy to od tegomulti-user.target
, nie ma potrzeby, aby wszystkie te rzeczy. Brzmi dość dziwnie.Ale po tej redukcji pozostaje ona jedną usługą
accounts-daemon.service
, jak wskazał Rinzwind w swoim komentarzu .Możemy więc założyć, że
graphical.target
jest potrzebny do załadowaniaaccounts-daemon.service
.Jednak w tym przypadku jest to znowu dziwne, ponieważ myślę, że bardziej sensownym byłoby stworzenie dedykowanego celu do tego celu, być może czegoś w rodzaju
accounts.target
lub dowolnego poprawnego terminu na jego opisanie. W każdym razie, prawdopodobnie programiści Canonical mieli powody, aby tak myśleć.Ale jestem ciekawa, jakie są tego powody.
źródło