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

我有一个共享主机。 我有权访问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 

这个答案并不像有些人所说的那么简单。 您可以执行ubuntu-standard软件包安装并将其用作服务器。 您可以将ubuntu-minimal用作服务器。 您可以使用ubuntu-desktop并将其分解,以便它不使用X …或者甚至将X留在那里进行管理(eww)。 您可以将内核软件包从-server更改为-generic到-rt等。您可以更改motd甚至只是从motd不一样长的版本升级(我的服务器都没有出来过)所有这一切 – 可能是因为他们从较旧的LTS升级了。

我想我们所有人都应该问的问题是: 为什么这很重要? 你想学什么? 它对你有什么不同?

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

 dpkg -l ubuntu-desktop 

将告诉您是否安装了建议的桌面组件。

 uname -a 

将告诉您是否正在使用服务器或通用内核。

“桌面或服务器”不是二进制的东西 – 可以在最初作为服务器安装的机器上安装一些桌面组件等。

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

可以通过输入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登录时看到的消息。

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

 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是服务器版的默认包。

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

可以将桌面function加载到服务器,并从桌面删除它们。 根本问题是哪些包是服务器function的一部分 ,并将获得额外的支持和更新周期。

最佳答案 (恕我直言)可以在Launchpad问题中找到(自2008年起):

服务器和桌面版之间有什么区别?

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

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

但很可能您的托管服务提供商没有获得所有图形部分,例如堆栈顶部的GNOME,因为不需要它们。 已安装的软件包使其成为服务器。

您可能对ubuntu-maintenance-check脚本( 链接 )感兴趣,它告诉您安装的每个软件包的维护周期 – 具有较长周期的那些是服务器软件包。

我正在大型网络上运行发现,我试图将LINUX作为工作站与服务器进行区分(因为我们将以不同方式对待它们)。

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

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

media-info表示服务器的“Ubuntu-Server”,桌面的“Ubuntu”表示。 syslog显示“cdrom”的相同信息

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

上述解决方案都不适合我。 有时一个系统没有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 

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

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

如前面的post所述,要确定您是使用桌面版还是服务器版并不容易,因为可以安装或删除所有软件包。

如果您处于一致且可预测的环境中,则确定桌面或服务器是否非常困难。

我只使用ubuntu-desktop(vanilla)或ubuntu服务器。 对我来说, dpkg -l ubuntu-desktop是一种非常可靠的方法来确定它是桌面还是服务器。

如链接post中所述,要确定您是使用桌面版还是服务器版并不容易,因为可以安装或删除所有软件包。

这是我用于脚本的函数。 基本上它会检查是否安装了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 ,而桌面版本使用网络管理器,因此请检查是否安装了网络管理器

 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壳

以及与某些衍生物有关的其他一些


我的应用依赖于服务器分发

即使在桌面版上运行服务器应用程序没有任何意义,也不应该在桌面版上安装应用程序的所有依赖项并使其正常工作。

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

使用motd脚本中的示例:

 #!/bin/bash if uname -r | grep -qs "\-server"; then echo "Server" else echo "Desktop" fi