จะตรวจสอบว่ามีการติดตั้ง Ubuntu Desktop หรือ Server ได้อย่างไร?


34

ฉันมีโฮสติ้งที่ใช้ร่วมกัน ฉันมีสิทธิ์เข้าถึงเชลล์ ระบบปฏิบัติการคือ Ubuntu และฉันต้องการตรวจสอบว่าเป็นรุ่นเซิร์ฟเวอร์หรือรุ่นเดสก์ท็อป

เมื่อฉันล็อกอินผ่านเชลล์มันจะแสดงข้อมูลต่อไปนี้:

Linux [server-name] 2.6.32-24-generic #39-Ubuntu SMP Wed Jul 28 06:07:29 UTC 2010 i686 GNU/Linux
Ubuntu 10.04.1 LTS

คำตอบ:


20

คำตอบนี้ไม่ได้ถูกตัดและแห้งเป็นบางคนกำลังทำ คุณสามารถทำการubuntu-standardติดตั้งแพ็คเกจและใช้เป็นเซิร์ฟเวอร์ คุณสามารถใช้ubuntu-minimalเป็นเซิร์ฟเวอร์ คุณสามารถรับubuntu-desktopและทำลายมันเพื่อไม่ให้ใช้ X ... หรือแม้แต่ปล่อยให้ X อยู่ที่นั่นเพื่อการบริหาร (eww) คุณสามารถเปลี่ยนแพ็กเกจเคอร์เนลจาก -server เป็น -generic เป็น -rt เป็นต้นคุณสามารถเปลี่ยน motd หรือแม้แต่แค่อัพเกรดจากเวอร์ชั่นที่ motd ไม่นานเท่ากับใหม่ (เซิร์ฟเวอร์ของฉันไม่เคยออกมาเลย ด้วย guff ที่ทั้งหมด - อาจเป็นเพราะพวกเขาอัปเกรดจาก LTS ที่เก่ากว่า)

ฉันเดาคำถามที่เราทุกคนควรถามคือ: ทำไมมันถึงสำคัญ? คุณกำลังพยายามเรียนรู้อะไร คุณมีความแตกต่างอะไร?

หากคุณกำลังพยายามใช้งานกราฟิกให้ตรวจสอบสิ่งที่คุณต้องการจริง ๆ (X, x11vnc ฯลฯ ) หากคุณพยายามตรวจสอบว่าไม่มีส่วนต่อประสานกราฟิกให้ทำเช่นเดียวกัน!


+1 ทำไมมันถึงสำคัญ? ดีพิจารณา ksplice เดสก์ท็อปฟรีเซิร์ฟเวอร์ไม่ใช่ ... ;)
0xC0000022L

1
นั่นเป็นคำถามที่เฉพาะเจาะจงมากขึ้น: ksplice จะตรวจสอบอะไรเพื่อตัดสินใจว่าคุณสามารถใช้เวอร์ชันเดสก์ท็อปได้ฟรีหรือไม่ ฉันเดาว่าพวกเขาตรวจสอบการสร้างเคอร์เนลเดสก์ท็อป vs เซิร์ฟเวอร์
30651 poolie

1
ทำไมมันถึงสำคัญ? ฉันไม่มีสิทธิ์ในการแทนที่ระบบดังนั้นจึงจำเป็นต้องยกเลิกการเรียกใช้เริ่มต้นด้วยการรู้ว่ามันคืออะไรในตอนแรก คุณกำลังพยายามเรียนรู้อะไร เฉพาะสิ่งที่ถูกถาม: มันเป็นเซิร์ฟเวอร์หรือติดตั้งบนเดสก์ท็อป อะไรที่ทำให้คุณแตกต่าง? หากเป็นการติดตั้งเซิร์ฟเวอร์และเต็มไปด้วยสิ่ง X เราควรยิงบุคลากรไอทีของเราและอื่น ๆ
Jan Kyu Peblik

@JanKyuPeblik หากคุณกำลังส่งระบบเสียและก็ไม่เห็นได้ชัดเดสก์ทอปที่คุณควรถามคนที่รายงานความผิดปกติ อย่างจริงจัง. คอมพิวเตอร์ไม่ใช่รถยนต์ ไม่ใช่รายการข้อมูลจำเพาะของค่าปฏิบัติการและเกณฑ์ความคลาดเคลื่อน สามารถกำหนดค่าได้ทั้งหมด จุดที่นี่ - นำมาใช้กับความคิดของคุณ - เป็นคนที่ส่งมอบระบบได้อย่างง่ายดายสามารถนำเซิร์ฟเวอร์และกำหนดค่าให้เป็นเดสก์ทอป หากคุณเปลี่ยนกลับไปเป็นเซิร์ฟเวอร์คุณได้ทำอันตราย ความแตกต่างทางเทคนิคระหว่างสองเวลาติดตั้งไม่เกี่ยวข้องกับปัญหา และความแตกต่างที่มีในปี 2010 เป็นตอนนี้เล็กน้อยมาก
Oli

ทั้งหมดที่ฉันได้รับก็คือ "ประวัติศาสตร์โง่เขลา"
ม.ค. Kyu Peblik

34
dpkg -l ubuntu-desktop 

จะบอกคุณว่ามีการติดตั้งส่วนประกอบเดสก์ท็อปที่แนะนำหรือไม่

uname -a

จะบอกคุณว่าเซิร์ฟเวอร์หรือเคอร์เนลทั่วไปกำลังใช้งานอยู่

"เดสก์ท็อปหรือเซิร์ฟเวอร์" ไม่ใช่สิ่งไบนารี - เป็นไปได้ที่จะติดตั้งส่วนประกอบเดสก์ท็อปบางอย่างบนเครื่องที่ติดตั้งเป็นเซิร์ฟเวอร์เป็นต้น

คุณต้องตัดสินใจว่าคุณต้องการใช้แพคเกจใดเป็นความแตกต่างหลักระหว่าง "เซิร์ฟเวอร์" หรือ "เดสก์ท็อป" อาจxserver-xorgเป็นทางเลือกที่ดีแม้ว่าบางเซิร์ฟเวอร์จะมีการอ้างอิงแพ็คเกจหรือเพื่อสนับสนุนเดสก์ท็อประยะไกล


2
dpkg -i ubuntu-desktop ไม่ได้ทำสิ่งที่คุณอธิบายให้ฉัน
8128

2
dpkg -lขออภัยฉันหมายถึง (อัปเดต.)
poolie

2
เป็นไปได้ที่จะมีเดสก์ท็อปที่ทำงานได้อย่างสมบูรณ์แบบโดยไม่ต้องใช้แพ็คเกจ ubuntu-desktop นั่นเป็นเพียง metapackage เพื่อให้แน่ใจว่าชุดมาตรฐานของแอพพลิเคชั่นที่รองรับเช่นแผงควบคุมอุปกรณ์เฉพาะของเดเบียน ฯลฯ ได้รับการติดตั้งพร้อมกับเดสก์ท็อปของคุณ หากคุณลบสิ่งเหล่านี้ ubuntu-desktop จะถูก "ลบ" อย่างมีประสิทธิภาพด้วย แต่คุณจะยังมีเดสก์ท็อปอยู่ มันจะเป็นการดีกว่าที่จะตรวจสอบแพ็คเกจ xserver-xorg-core แทน แม้ว่าการมีอยู่ของแพ็คเกจนั้นไม่ได้รับประกันว่าจะมีการใช้งาน แต่ไม่มีเหตุผลที่ดีที่จะติดตั้งบนเครื่องที่ไม่ใช่เดสก์ทอป
thomasrutter

ใช่ความจริงที่ว่าไม่มีเส้นแบ่งที่ชัดเจนระหว่างเดสก์ท็อปและเซิร์ฟเวอร์ได้ถูกกล่าวถึงอย่างกว้างขวางโดยคำตอบส่วนใหญ่รวมถึงของฉันด้วย แต่ubuntu-desktopเป็นการทดสอบที่สมเหตุสมผลว่าคุณมีเดสก์ท็อป Ubuntu หรือไม่ หากคุณติดตั้งจาก CD / ISO บนเดสก์ท็อปคุณจะมีแพ็คเกจนี้
poolie

15

cat /etc/motdก็สามารถตรวจสอบได้โดยการพิมพ์ ผลลัพธ์จะแตกต่างกันไปตามเซิร์ฟเวอร์และแตกต่างกันไปตามรุ่นเดสก์ท็อป

เดสก์ทอป:

Ubuntu 10.10

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/

เซิร์ฟเวอร์:

Ubuntu 10.10

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/

  System information as of Wed Nov 10 20:54:11 UTC 2010

  System load:  0.07               Processes:           78
  Usage of /:   30.4% of 14.76GB   Users logged in:     1
  Memory usage: 38%                IP address for eth0: XXXXXXXX
  Swap usage:   0%

  Graph this data and manage this system at https://landscape.canonical.com/
---------------------------------------------------------------------
At the moment, only the core of the system is installed. To tune the 
system to your needs, you can choose to install one or more          
predefined collections of software by running the following          
command:                                                             

   sudo tasksel --section server  

นอกจากนี้ยังควรกล่าวถึงว่าไฟล์นี้สามารถแก้ไขได้อย่างง่ายดายโดย sudo ซึ่งทำบ่อยมากเพราะเป็นข้อความที่ผู้ใช้เห็นเมื่อเขาบันทึกผ่าน ssh


2
ส่วนใหญ่จะบอกคุณว่าlandscape-clientมีการติดตั้งหรือไม่ ซึ่งอาจเกิดขึ้นจริงบนเซิร์ฟเวอร์ แต่ไม่ได้เชื่อมต่อกับว่าคุณใช้เซิร์ฟเวอร์ OS จริงหรือไม่
poolie

5

นี่อาจไม่ใช่วิธีที่เร็วหรือบริสุทธิ์ที่สุดในการบอก แต่ให้เรียกใช้:

dpkg --get-selections | grep linux-image | grep -v deinstall

หากแพ็คเกจ linux-image ที่ติดตั้งในปัจจุบันมีคำว่า "เซิร์ฟเวอร์" อยู่แสดงว่าคุณกำลังใช้เซิร์ฟเวอร์ Ubuntu

ตัวอย่างเช่นแพคเกจเคอร์เนลล่าสุดสำหรับ Ubuntu 10.10 บนเดสก์ท็อป:

linux-image-2.6.35-22-generic

และเซิร์ฟเวอร์:

linux-image-2.6.35-22-server

สำหรับแพ็คเกจทั่วไปที่ควรเหมือนกันใน Ubuntu รุ่นต่าง ๆlinux-image-genericเป็นแพ็คเกจเริ่มต้นสำหรับเดสก์ท็อป Ubuntu และlinux-image-serverเป็นค่าเริ่มต้นสำหรับรุ่นเซิร์ฟเวอร์


4
คุณสามารถเรียกใช้เซิร์ฟเวอร์เคอร์เนลบนเดสก์ท็อปติดตั้งเช่นเดียวกับที่คุณสามารถเรียกใช้เคอร์เนลเดสก์ทอปบนเซิร์ฟเวอร์ นี่ไม่ใช่คำตอบที่ชัดเจนจากการยืดใด ๆ
Oli

@Oli: ตามที่คุณชี้ไปแล้วดูเหมือนจะไม่มีคำตอบที่แน่นอน;)
0xC0000022L

4

ไม่มีคำจำกัดความที่ชัดเจนเพียงคำตอบสำหรับคำถามนี้

เป็นไปได้ที่จะโหลดคุณสมบัติเดสก์ท็อปไปยังเซิร์ฟเวอร์และเพื่อลบออกจากเดสก์ท็อป ปัญหาหลักคือแพ็คเกจใดเป็นส่วนหนึ่งของการทำงานของเซิร์ฟเวอร์และจะได้รับการสนับสนุนและการอัพเดทเพิ่มเติม

ตอบที่ดีที่สุด (IMHO) สามารถพบได้ใน Launchpad คำถาม (จาก 2008):

ความแตกต่างระหว่างรุ่นเซิร์ฟเวอร์และเดสก์ท็อปคืออะไร

https://answers.launchpad.net/ubuntu/+question/40114


คุณสามารถสรุปผลลัพธ์ของคำถาม Launchpad ได้ที่นี่
Peter Mortensen

2

คุณต้องจำไว้ว่าไม่มีความแตกต่างพื้นฐานระหว่างรุ่นเดสก์ท็อปและเซิร์ฟเวอร์

มีความเป็นไปได้สูงที่ผู้ให้บริการโฮสติ้งของคุณจะไม่ได้รับชิ้นส่วนกราฟิกทั้งหมดเช่น GNOME ที่ด้านบนสุดของสแต็กเพราะไม่จำเป็นต้องใช้พวกเขา แพ็คเกจที่ติดตั้งเป็นสิ่งที่ทำให้เซิร์ฟเวอร์

คุณอาจสนใจubuntu-maintenance-checkสคริปต์ ( ลิงก์ ) ที่บอกรอบการบำรุงรักษาของแต่ละแพ็คเกจที่ติดตั้ง - ผู้ที่มีระยะเวลานานกว่านั้นคือแพ็คเกจเซิร์ฟเวอร์


เห็นได้ชัดว่าตั้งแต่ 12.04 เป็นต้นไปแพคเกจที่รองรับทั้งหมดจะได้รับอายุการใช้งานการสนับสนุนเท่ากันโดยไม่แบ่งแยกระหว่างเซิร์ฟเวอร์กับเดสก์ท็อป
poolie

2

ฉันใช้การค้นพบในเครือข่ายขนาดใหญ่และฉันพยายามแยกความแตกต่างจาก LINUX ที่ติดตั้งเป็นเวิร์กสเตชันกับเซิร์ฟเวอร์ (เพราะเราจะปฏิบัติต่อพวกเขาแตกต่างกัน)

ฉันหวังว่าจะมีแอตทริบิวต์หรือไฟล์ที่มี Ubuntu-Server แทน Ubuntu

ฉันจะค้นหาไฟล์ที่น่าสนใจใน / var / log / installer:

media-info บอกว่า "Ubuntu-Server" สำหรับเซิร์ฟเวอร์และเพียงแค่ "Ubuntu" สำหรับเดสก์ท็อป syslog แสดงข้อมูลเดียวกันสำหรับ "cdrom"

ทั้งสองอย่างนี้มีประโยชน์และฉันสามารถใช้ร่วมกับข้อมูลฮาร์ดแวร์ สิ่งนี้ควรบอกคุณอย่างน้อยว่าเวอร์ชันใดที่ติดตั้งไว้ตั้งแต่แรก


1

"เกือบ" คำถามเดียวกันได้ถูกถามที่นี่: รู้จักเซิร์ฟเวอร์หรือเดสก์ท็อปของ Ubuntu

ฉันต้องการโพสต์คำตอบของฉันที่นี่เช่นกันเพราะมีคำแนะนำใหม่บางอย่างเกี่ยวกับวิธีตรวจสอบว่าคุณใช้งานบนเดสก์ท็อปหรือเซิร์ฟเวอร์

ดังที่กล่าวไว้ในโพสต์ก่อนหน้านี้ไม่ใช่เรื่องง่ายที่จะตรวจสอบว่าคุณใช้เดสก์ท็อปหรือเซิร์ฟเวอร์ฉบับเพราะแพคเกจทั้งหมดสามารถติดตั้งหรือลบออกได้

หากคุณอยู่ในสภาพแวดล้อมที่สอดคล้องและคาดการณ์ได้ไม่น่าจะยากที่จะตัดสินว่าเดสก์ท็อปหรือเซิร์ฟเวอร์

ฉันใช้เซิร์ฟเวอร์อูบุนตูเดสก์ท็อป (วานิลลา) หรืออูบุนตูเท่านั้น สำหรับฉันdpkg -l ubuntu-desktopมันเป็นวิธีที่เชื่อถือได้มากในการตรวจสอบว่าเป็นเดสก์ท็อปหรือเซิร์ฟเวอร์

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

นี่คือฟังก์ชั่นของฉันที่ฉันใช้กับสคริปต์ของฉัน โดยทั่วไปจะตรวจสอบว่ามีการติดตั้ง xserver-common หรือ xwayland หรือไม่ หากมีการติดตั้งหนึ่งในนั้นหมายถึงระบบเดสก์ท็อป

#!/usr/bin/env bash

check_if_desktop (){
  IS_DESKTOP="false"

  displayManager=(
    'xserver-common' # X Window System (X.Org) infrastructure
    'xwayland' # Xwayland X server
  )
  for i in "${displayManager[@]}"; do
    dpkg-query --show --showformat='${Status}\n' $i 2> /dev/null | grep "install ok installed" &> /dev/null
    if [[ $? -eq 0 ]]; then
      IS_DESKTOP="true"
    fi
  done
}

ต่อไปนี้เป็นสิ่งอื่น ๆ ที่ควรตรวจสอบ:

ตามค่าเริ่มต้นรุ่นเซิร์ฟเวอร์จะใช้รุ่นคลาสสิค/etc/network/interfacesในขณะที่รุ่นเดสก์ท็อปทำงานกับ Network Manager ดังนั้นให้ตรวจสอบว่ามีการติดตั้งตัวจัดการเครือข่าย

dpkg -l network-manager

หรือเรียกใช้คำสั่ง nmcli (เครื่องมือบรรทัดคำสั่งสำหรับ NM) หากคุณได้รับข้อความเช่นนี้:

The program 'nmcli' is currently not installed. You can install it by typing:
sudo apt-get install network-manager

ความน่าจะเป็นสูงที่คุณใช้กับเซิร์ฟเวอร์ แต่โปรดทราบว่าคุณสามารถแก้ไขเซิร์ฟเวอร์เพื่อใช้งานกับ NM


ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบว่ามีการติดตั้งส่วนประกอบเดสก์ท็อปหรือไม่

dpkg -l ubuntu-desktop

บนเซิร์ฟเวอร์คุณจะได้รับข้อความเช่นนี้:

dpkg-query: no packages found matching ubuntu-desktop

บนเดสก์ท็อปคุณจะได้รับข้อความแจ้งว่าติดตั้งเวอร์ชันใด


ตรวจสอบแพ็คเกจอื่น ๆ ที่มักพบบนเดสก์ท็อป:

dpkg -l unity (gnome, mate and so one) # Desktop environments
dpkg -l compiz (E17, fluxbox and so one) # Window manager
dpkg -l xorg # X window server

หรือใช้:

 dpkg-query --show --showformat='${Status}\n' *packagename* 2> /dev/null | grep "install ok installed"

ตรวจสอบว่าเซิร์ฟเวอร์ X กำลังทำงานอยู่:

ps -e | grep X
sudo netstat -lp | grep -i Xorg

ตรวจสอบบริการที่มีเฉพาะบนเดสก์ท็อป:

มันขึ้นอยู่กับรุ่น Ubuntu ของคุณวิธีการตรวจสอบบริการ:

sudo service *servicename* status # on SysVinit 
sudo status *servicename* # on Upstart
systemctl status *servicename*.service # on systemd

บริการทั่วไปคือ:

  • lightdm
  • x11 ทั่วไป
  • gnome-เปลือก

และอื่น ๆ ที่เกี่ยวข้องกับอนุพันธ์บางอย่าง


แอปพลิเคชันของฉันขึ้นอยู่กับการแจกจ่ายเซิร์ฟเวอร์

แม้ว่ามันจะไม่สมเหตุสมผลเลยที่จะเรียกใช้แอปพลิเคชั่นเซิร์ฟเวอร์ในรุ่นเดสก์ท็อป แต่ก็ไม่ควรมีปัญหาใด ๆ กับการติดตั้งการพึ่งพาทั้งหมดสำหรับแอปพลิเคชันของคุณบนเดสก์ท็อปอิดิชัน

คุณสามารถอธิบายรายละเอียดเกี่ยวกับเรื่องนี้ได้อย่างไร


0

วิธีการแก้ปัญหาข้างต้นไม่ได้ผลดีสำหรับฉัน บางครั้งระบบไม่มี motd หรือผู้ดูแลระบบอาจเปลี่ยนแปลงเป็นต้นฉันไม่แน่ใจด้วยซ้ำว่าทำไมคำตอบที่ระบุไว้ข้างต้นคือคำตอบ "ถูกต้อง" นี่คือสิ่งที่ฉันใช้

#!/bin/bash
__check_desktop() {
  if [ `(dpkg-query -W -f='${Status}' ubuntu-desktop 2>/dev/null | grep -c "ok installed")` -eq 1 ]; then
    err "Ubuntu Server is required, but it appears that you are running Ubuntu Desktop"
    exit 1
  fi
}

# Now just call the function:
__check_desktop

การใช้ -f กับ $ {Status} นั้นดีและฉันจะใช้ แต่อย่าใช้ bash กับไวยากรณ์ sh และฟังก์ชั่นที่ไม่มีอยู่เช่น 'err'
Tomáš Nesrovnal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.