如何检查Ubuntu Desktop或Server是否已安装?


34

我有一个共享主机。我可以使用shell。操作系统是Ubuntu,我想检查它是服务器版本还是台式机版本。

当我通过shell登录时,它显示以下信息:

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

Answers:


20

这个答案不像有些人说得那么干。您可以ubuntu-standard安装软件包并将其用作服务器。您可以ubuntu-minimal用作服务器。您可以ubuntu-desktop折断它,使其不使用X ...,甚至可以将X留在那里进行管理(eww)。您可以将内核程序包从-server更改为-generic到-rt等。您可以更改motd或什至只从motd不需要新版本的版本进行升级(我的服务器都没有问世)所有这些问题-可能是因为它们是从较早的LTS升级而来的。

我猜我们所有人都应该问的问题是:为什么重要?你想学什么?它对您有什么影响?

如果您要运行图形化的内容,请检查您实际需要的内容(X,x11vnc等)。如果您要检查是否没有图形界面,请执行相同操作!


+1。为什么重要呢?好吧,考虑使用ksplice。桌面是免费的,服务器不是...;)
0xC0000022L

1
好吧,这是一个更具体的问题:ksplice会检查什么来决定是否可以使用免费的桌面版本。我猜他们会检查桌面vs服务器内核的版本。
poolie 2011年

1
为什么这有关系?我无权更换该系统,因此需要先了解它的原始情况,然后再将其取消克隆。你想学什么?仅要求提供:是服务器安装还是台式机安装。它对您有什么区别?如果这是一个服务器上安装和它充满了X的东西,我们应该解雇我们的IT人,等等。
扬圭Peblik

@JanKyuPeblik如果您的系统已损坏,并且显然不是台式机,则应询问报告故障的人员。说真的 电脑不是汽车。这不是操作值和公差的规格列表。全部都是可配置的。此处的要点-适用于您的想法-是处理系统的人员很容易将服务器配置为台式机。如果将其重新变成服务器,则会造成伤害。安装时两者之间的技术区别与问题无关。而且,2010年的区别现在很小。
奥利

我从中得到的只是“历史是愚蠢的”。
Jan Kyu Peblik

34
dpkg -l ubuntu-desktop 

会告诉您是否已安装建议的桌面组件。

uname -a

会告诉您是使用服务器还是通用内核。

“台式机或服务器”不是二进制文件,可以在最初作为服务器安装的计算机上安装一些台式机组件,等等。

您必须决定要使用哪个程序包作为“服务器”或“桌面”之间的关键区别。也许xserver-xorg是一个不错的选择,尽管即使某些服务器也具有依赖包或支持远程桌面的功能。


2
dpkg -i ubuntu-desktop 不按照你对我的描述去做
8128

2
对不起,我是说dpkg -l。(已更新。)
poolie 2010年

2
如果没有ubuntu-desktop软件包,则可以拥有一个完美运行的桌面。这只是一个元软件包,可确保在您的桌面上安装某些标准的支持应用程序集,例如控制面板,Debian专用的东西等。如果您删除其中任何一个,那么ubuntu-desktop也将被有效地“删除”,但是您仍然拥有一个桌面。最好检查一下xserver-xorg-core软件包。尽管该软件包的存在并不能保证已在使用该软件包,但没有充分的理由将其安装在非台式机上。
thomasrutter 2012年

是的,大多数答案(包括我的答案)都广泛讨论了台式机与服务器之间没有界限的事实。但这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已安装。在服务器上可能确实如此,但实际上与是否使用服务器操作系统并没有真正的联系。
2010年

5

这可能不是最快或最纯粹的告诉方式,但可以运行:

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

如果当前安装的linux-image软件包中包含单词“ server”,则说明您正在运行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

这个问题没有明确定义的措辞简单的答案。

可以将桌面功能加载到服务器,并将其从桌面删除。根本问题是哪些软件包是服务器功能的一部分,并将获得额外的支持和更新时间。

最佳答案(恕我直言)在(2008年),一个快速启动的问题上找到:

服务器版和台式机版有什么区别?

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


您可以在这里总结启动板问题的结果吗?
Peter Mortensen

2

您必须记住,桌面版和服务器版之间没有根本区别。

但是,您的托管服务提供商很可能没有将所有图形化内容(例如GNOME)放在堆栈的顶部,因为不需要它们。已安装的软件包使它成为服务器。

您可能对ubuntu-maintenance-check脚本(link)感兴趣,该脚本告诉您已安装的每个软件包的维护周期-期限较长的是服务器软件包。


显然,从12.04开始,所有受支持的软件包都具有相同的支持生存期,而无需区分服务器与桌面。
poolie

2

我正在大型网络上运行发现,并且试图与作为工作站而不是服务器安装的LINUX区别开来(因为我们将以不同的方式对待它们)。

我希望具有Ubuntu-Server而不是Ubuntu的属性或文件。

我确实在/ var / log / installer中找到了一些有趣的文件:

media-info对服务器说“ Ubuntu-Server”,对台式机说“ Ubuntu”。syslog显示与“ cdrom”相同的信息

这两个都是有用的,我可以将它们与硬件信息结合使用。这至少应该告诉您最初安装的版本。


1

在这里“几乎”提出了同样的问题: 了解Ubuntu分发服务器或桌面

我也想在这里发布我的答案,因为它提供了一些新的提示,提示您如何检查您的桌面版或服务器版。

如前几篇文章所述,要确定是否使用台式机或服务器版本并不容易,因为可以安装或删除所有软件包。

如果您处于一个一致且可预测的环境中,那么确定是台式机还是服务器就不难了。

我仅使用ubuntu-desktop(香草)或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
}

以下是其他几项要检查的内容:

默认情况下,服务器版本使用classic /etc/network/interfaces,而台式机版本与Network Manager一起运行,因此请检查是否已安装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常见
  • 侏儒壳

以及与某些衍生产品相关的其他一些


我的应用程序取决于服务器分布

即使在台式机版本上运行服务器应用程序没有任何意义,在台式机版本上安装应用程序的所有依赖项并使其正常运行也不会有任何问题。

您能否详细说明为什么它取决于服务器发行版?


0

上述解决方案都不适合我。有时系统没有杂音,或者管理员更改了杂音,等等。我什至不确定为什么上面给出的答案是“正确”的答案。这就是我最终使用的内容。

#!/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

在$ {Status}中使用-f很好,我将使用它。但是不要将bash与sh语法和不存在的功能(例如'err')一起使用。
托马什Nesrovnal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.