ทำไมเซิร์ฟเวอร์ Ubuntu จึงมีกราฟิกเป้าหมายเป้าหมายเป็น systemd เป้าหมายเริ่มต้น


20

ฉันเคยเป็นผู้ใช้ Ubuntu มาระยะหนึ่งแล้วและในที่ทำงานเรามีเซิร์ฟเวอร์ VM VM จำนวนมากซึ่งทั้งหมดนี้ทำงานUbuntu 14.04 LTSเพื่อปรับใช้เว็บแอปพลิเคชันฐานข้อมูลและเครื่องมืออื่น ๆ ของเรา

ฉันกำลังศึกษาUbuntu 16.04 LTSเดสก์ท็อปและเซิร์ฟเวอร์เพื่อให้สามารถอัพเกรดเซิร์ฟเวอร์การผลิตของเราในอนาคตอันใกล้โดยไม่มีปัญหา

ตั้งแต่ Ubuntu 15.04 initและupstartถูกแทนที่ด้วยSystemdดังนั้นฉันจึงศึกษา Systemd ด้วย

ฉันสังเกตว่าคอมพิวเตอร์พัฒนาของฉันที่ใช้ Ubuntu 16.04 รุ่นเดสก์ท็อปนั้นgraphical.targetเป็นเป้าหมายเริ่มต้นของ systemd ซึ่งเป็นตรรกะ

แต่จากนั้นฉันสังเกตเห็นว่าเซิร์ฟเวอร์ทดสอบที่ใช้ Ubuntu 16.04 Server edition นั้นยังใช้graphical.targetเป็นค่าเริ่มต้น systemd เป้าหมาย

$ systemctl get-default
graphical.target

ดังนั้นฉันจึงสับสน เซิร์ฟเวอร์ไม่มีเลเยอร์กราฟิกใด ๆ ดังนั้นมันจึงเป็นเป้าหมายเริ่มต้นgraphical.targetอย่างไร

แก้ไข # 0

เช่นเดียวกับ Rinzwind ที่แนะนำในความคิดเห็นฉันมองไปที่เป้าหมายเพื่อดูว่ามันทำงานหรือไม่ ...

และการตอบสนองคือใช่:

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

คำตอบของ Mark Stosberg ชี้ให้เห็นข้อเท็จจริงว่า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

คุณขาดข้อมูลสำคัญ 1 ส่วน: มีการgraphical.targetใช้งานหรือไม่
Rinzwind

ขอบคุณสำหรับความคิดเห็นของคุณ แต่ในความเป็นจริงใช่มันใช้งานได้! มันหมายความว่าอะไร?
Rémi B.

อืมพบบางสิ่งที่เกี่ยวข้อง
Rinzwind

ส่วนที่อาจสมเหตุสมผล: "... หรือ accounts-daemon.service" เซิร์ฟเวอร์จะต้องใช้สิ่งนี้เช่นกันฉันก็จะถือว่า สับสนแม้ว่าจะพูดน้อย
Rinzwind

คำตอบ:


10

แม้จะมีชื่อของเป้าหมาย แต่ก็ไม่มีอะไรที่จะแสดงผลกราฟิกบน Ubuntu Server 16.04 คุณสามารถใช้คำสั่งนี้เพื่อตรวจสอบและเปรียบเทียบกับเดสก์ท็อปของคุณหากคุณต้องการ:

systemctl list-dependencies graphical.target 

บนเซิร์ฟเวอร์ Ubuntu 16.04 ของฉันฉันเห็นว่าเป้าหมายนั้นขึ้นอยู่กับ "display-manager.service" แต่ไม่มีตัวจัดการจอแสดงผลติดตั้งหรือใช้งานอยู่

ฉันคาดหวังว่าเซิร์ฟเวอร์ของ Ubuntu จะถูกตั้งค่าด้วยวิธีนี้เพื่อความมั่นคงบางอย่างแม้ว่าฉันจะเห็นว่ามันสับสน


เห็นด้วยกับ pary สับสน บางคนอาจคิดว่าการตั้งค่าไม่เพียงพอ
Rinzwind

@Rinzwind ผมไม่เข้าใจวลีของคุณ "ไม่ได้ตั้งค่าเดอก็พอ" (ภาษาอังกฤษไม่ใช่ภาษาหลักของฉัน)
Rémiบี

คุณอาจถูกต้องเกี่ยวกับความต้องการความมั่นคง รุ่นของเซิร์ฟเวอร์ถูกสร้างขึ้นจากเดสก์ท็อปแทนที่จะเป็นทางเลือกอื่นจากเดเบียนไหม
Rémi B.

'de' หมายถึงสภาพแวดล้อมเดสก์ท็อป ฉันจำได้ว่ามีการแจ้งเตือนเมื่อไม่กี่ปีก่อนที่มันบอกว่า Ubuntu เริ่มใช้ระบบฐาน 1; แต่ฉันไม่รู้ว่าพวกเขาใช้เซิร์ฟเวอร์เพื่อสร้างเดสก์ท็อปหรือว่าพวกเขาใช้เดสก์ท็อปเพื่อสร้างเซิร์ฟเวอร์ "graphic.target" เป็นการตั้งค่าบริการเดสก์ท็อป มันสามารถมีค่าเป็น "" แล้วไม่เริ่ม DE แต่ทำให้สับสน (ฉันคาดหวังว่าจะเก็บค่าและเซิร์ฟเวอร์ให้ใช้ "multi-user.target"
Rinzwind

8

จากคู่มือ redhat :

ตัวอย่างเช่นหน่วย graphic.target ซึ่งใช้เพื่อเริ่มเซสชันกราฟิกเริ่มบริการระบบเช่น GNOME Display Manager (gdm.service) หรือบัญชีบริการ (accounts-daemon.service) และเปิดใช้งานผู้ใช้หลายคน หน่วยเป้าหมาย ในทำนองเดียวกันหน่วย multi-user.target จะเริ่มบริการระบบที่จำเป็นอื่น ๆ เช่น NetworkManager (NetworkManager.service) หรือ D-Bus (dbus.service) และเปิดใช้งานหน่วยเป้าหมายอื่นที่ชื่อว่า basic.target

ดังนั้นจึงไม่ผิดที่ต้องตั้งค่าเนื่องจากไม่ได้เปิดใช้งานตัวจัดการการแสดงผลเมื่อไม่ได้ตั้งค่าบริการที่จัดการกับบริการการแสดงผล

สำหรับเซิร์ฟเวอร์คุณสามารถตั้งค่าเป็นmulti-user.targetแต่ไม่จำเป็น ดูเหมือนว่าคุณจะจบลงที่ runlevel 4 ถ้าคุณทำและ runlevel 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. 

ฉันขอขอบคุณข้อเสนอแนะเกี่ยวกับ downvote
Rinzwind

1

ตรวจสอบรายละเอียดเพิ่มเติมในระดับแรกของการพึ่งพาต้นไม้ของเป้าหมาย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:

admin@server16.04:~$ 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ไม่จำเป็นต้องมีทุกสิ่งนี้ มันฟังดูแปลกพอสมควร

แต่หลังจากที่ลดลงนี้ก็ยังคงเป็นหนึ่งการบริการaccounts-daemon.serviceเช่นRinzwind ชี้ให้เห็นในความคิดเห็นของตน

ดังนั้นเราจึงสามารถสรุปได้ว่าเป็นสิ่งจำเป็นเพื่อโหลดgraphical.targetaccounts-daemon.service

อย่างไรก็ตามในกรณีนั้นมันแปลกอีกครั้งเพราะฉันผอมมันจะทำให้รู้สึกมากกว่าที่จะสร้างเป้าหมายเฉพาะสำหรับวัตถุประสงค์นั้นบางทีอาจจะมีบางอย่างที่เหมือนaccounts.targetหรือคำที่ถูกต้องเพื่ออธิบาย อย่างไรก็ตามนักพัฒนา Canonical อาจมีเหตุผลที่ทำให้คิดเช่นนั้น

แต่ฉันยังสงสัยอยู่เสมอว่าจะต้องรู้เหตุผลของมัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.