Neden bir Ubuntu Sunucusu varsayılan systemd hedefi olarak graphical.target var?

19

Bir süredir Ubuntu kullanıcısıyım ve işyerinde web uygulamalarımızı, veritabanlarımızı ve diğer araçlarımızı dağıtmak için Ubuntu 14.04 LTS çalıştıran çok sayıda Ubuntu VM sunucusu var .

Şu anda üretim sunucularımızı yakın bir zamanda sorunlara yol açmadan yükseltebilmek için Ubuntu 16.04 LTS , masaüstü ve sunucu üzerinde çalışıyorum.

Ubuntu 15.04, init ve upstart 'si Systemd ile değiştirildiğinden, Systemd de çalışıyorum.

Ubuntu 16.04 Desktop sürümünü çalıştıran geliştirme bilgisayarımın, varsayılan sistemd hedefi olarak graphical.target 'i olduğunu fark ettim, bu da mantıklı.

Ancak Ubuntu 16.04 Sunucu sürümü çalışan test sunucusunun da varsayılan sistemd hedefi olarak graphical.target değerini kullandığını fark ettim.

$ systemctl get-default
graphical.target

Yani kafam karıştı. Sunucunun herhangi bir grafik katmanı yok, bu yüzden varsayılan hedef graphical.target 'dir?

Düzenle <0

Rinzwind'in yorumlarda önerdiği gibi, aktif olup olmadığını görmek için hedefe baktım ...

ve yanıt YES:

[email protected]:~$ systemctl get-default
graphical.target

[email protected]:~$ 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.

Yani biraz daha kafam karıştı.

# 1’i Düzenle

Mark Stosberg'in yanıtı, display-manager.service 'sinin kendi% 16'lık sunucunun graphical.target ' sinin bağımlılık ağacının bir parçası olduğunu ve makinede hiçbir görüntü yöneticisinin yüklü olmadığını ya da çalıştırılmayacağını belirtti. Buna da baktım ve gerçekten de sunucumda bu bağımlılık var:

[email protected]:~$ systemctl list-dependencies graphical.target 
graphical.target
● ├─accounts-daemon.service
● ├─apache2.service
● ├─apport.service
● ├─display-manager.service

...

Ve bu hedefin solunda, diğer bağımlılıkların çoğunun yeşil olduğu bir kırmızı daire var.

Ve bu sefer sonuç tutarlı:

[email protected]:~$ systemctl status display-manager.service 
● display-manager.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

Ancak burada başka garip bir şey var: masaüstü sürümümde, display-manager.service , graphical.target 'sinin bir bağımlılığı değil:

[email protected]:~ $ systemctl list-dependencies graphical.target | grep display
[email protected]:~ $ 

Ama bir alternatif bile buldum çünkü Ubuntu-Gnome 'ı varsayılan pencere yöneticisini değiştirerek lightdm ile çalıştırıyorum:

[email protected]:~ $ systemctl list-dependencies graphical.target | grep lightdm
● ├─lightdm.service
    
sordu Rémi B. 13.10.2016 15:47

3 cevap

1

Ayrıntıları daha ayrıntılı olarak incelemek, hedefin graphical.target 'sinin ağaç bağımlılığının ilk düzeyini:

[email protected]:~$ 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 'nin ilk düzeyiyle karşılaştırarak:

[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

...

Devre dışı bırakılan hedefleri graphical.target ağacında ( display-manager.service , systemd-update-utmp-runlevel.service , ureadahead.service ) kaldırırsak, hemen hemen kalanların:

  • apache2.service
  • apport.service
  • grub-common.service
  • grub-common.service
  • irqbalance.service
  • mdadm.service
  • ondemand.service
  • ve sysstat.service

, multi-user.target 'in bağımlılık ağacının ilk düzeyine zaten dahil edilmiştir.

Yine de bu gerçeği tekrar sormalıyız, çünkü graphical.target multi-user.target 'sine bağlıdır, tüm bu şeylere gerek yoktur. Yeterince garip geliyor.

Ancak bu düşüşten sonra, bir hizmet, accounts-daemon.service , Rinzwind kendi yorumunda belirtti.

Yani graphical.target 'sinin accounts-daemon.service ' ı yüklemek için gerekli olduğunu varsayabiliriz.

Ancak, bu durumda, yine garip, çünkü ben bu amaç için ayrılmış bir hedef, belki accounts.target veya onu tanımlamak için herhangi bir doğru terim gibi bir şey oluşturmak için daha mantıklı olurdu. Her neyse, muhtemelen Canonical geliştiricilerin bu gibi düşünmek için nedenleri vardı.

Ama nedenlerini bilmek beni çok merak ediyor.

    
verilen cevap Rémi B. 14.10.2016 12:14
9

Hedefin ismine rağmen, Ubuntu Server 16.04'te grafiksel olarak çalışan hiçbir şey yok. İsterseniz masaüstünüzle kontrol etmek ve karşılaştırmak için bu komutu kullanabilirsiniz:

systemctl list-dependencies graphical.target 

Ubuntu 16.04 sunucumda, hedeflerin "display-manager.service" ye bağlı olduğunu, ancak hiçbir görüntü yöneticisinin yüklü olmadığını veya çalıştırıldığını görüyorum.

Ubuntu sunucularının bir çeşit tutarlılık için bu şekilde ayarlanmasını bekliyorum, ancak kafa karıştırıcı olduğuna katılıyorum.

    
verilen cevap Mark Stosberg 13.10.2016 17:44
8

Redhat kılavuzundan :

  

Örneğin grafiksel bir oturum başlatmak için kullanılan graphical.target birimi, GNOME Görüntü Yöneticisi (gdm.service) veya Hesap Hizmeti (accounts-daemon.service) gibi sistem hizmetlerini başlatır ve aynı zamanda çoklu -user.target birimi. Benzer şekilde, çoklu-user.target birimi, NetworkManager (NetworkManager.service) veya D-Bus (dbus.service) gibi diğer önemli sistem servislerini başlatır ve basic.target adında başka bir hedef birimi etkinleştirir.

Dolayısıyla, görüntü hizmetini yürüten hizmet ayarlanmadığında ekran yöneticisini etkinleştirmediğinden ayarlanması yanlış olmaz.

Bir sunucu için multi-user.target 'ya ayarlayabilirsiniz, ancak gerekli değildir. Yapmazsan, runlevel 4'e girer ve eğer sen yapmazsan 5 runlevel.

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. 
    
verilen cevap Rinzwind 13.10.2016 17:29

Etiketlerdeki diğer soruları oku