Как проверить, установлен ли Ubuntu Desktop или Server?

У меня есть общий хостинг. У меня есть доступ к shell. Операционная система - Ubuntu, и я хочу проверить, является ли это серверной версией или настольной версией.

Когда я вхожу в систему через оболочку, она показывает следующую информацию:

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

сообщит вам, установлены ли предлагаемые компоненты рабочего стола.

uname -a

сообщит вам, используется ли серверное или универсальное ядро.

"Рабочий стол или сервер" - это не двоичная вещь - возможно, некоторые компоненты рабочего стола установлены на компьютере, изначально установленном как сервер, и т.д.

Вы должны решить, какой пакет вы хотите использовать в качестве ключевого различия между "сервером" или "рабочим столом". Может быть xserver-xorg это хороший выбор, хотя даже некоторые серверы будут иметь его для зависимостей пакетов или для поддержки удаленных рабочих столов.

Этот ответ не так лаконичен и сух, как пытаются представить некоторые люди. Вы можете сделать ubuntu-standard установите пакет и используйте его в качестве сервера. Вы можете использовать ubuntu-minimal в качестве сервера. Вы можете взять ubuntu-desktop и сломайте его, чтобы он не использовал X... Или даже оставить X там для администрирования (eww). Вы можете изменить пакеты ядра с -server на -generic на -rt и т.д. Вы можете изменить motd или даже просто перейти с версии, в которой motd не такой длинный, как у новой (ни один из моих серверов никогда не выходил со всей этой болтовней - вероятно, потому, что они обновлены со старых LTSE).

Я предполагаю, что вопросы, которые все мы должны задавать, следующие: Почему это имеет значение? Чему ты пытаешься научиться? Какое это имеет значение для вас?

Если вы пытаетесь запустить что-то графическое, проверьте, что вам действительно нужно (X, x11vnc и т.д.). Если вы пытаетесь проверить, что графического интерфейса нет, сделайте то же самое!

это можно проверить, набрав cat /etc/motd. Выходные данные будут отличаться на сервере и отличаться в настольной версии.

Рабочий стол:

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

Сервер:

Ubuntu 10.10Welcome 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-образа содержится слово "сервер", значит, вы используете Ubuntu server.

Например, текущий последний пакет ядра для Ubuntu 10.10 desktop:

linux-image-2.6.35-22-generic

И сервер:

linux-image-2.6.35-22-server

Для более общего пакета, который должен быть одинаковым в разных версиях Ubuntu, linux-image-generic является пакетом по умолчанию для Ubuntu desktop и linux-image-server используется по умолчанию для версии сервера.

"Почти" тот же самый вопрос был задан здесь: Знаете сервер распространения Ubuntu или рабочий стол

Я также хотел бы опубликовать свой ответ здесь, потому что в нем есть несколько новых подсказок, как проверить, используете ли вы настольную или серверную версию.

Как упоминалось в предыдущих сообщениях, нелегко определить, используете ли вы настольную или серверную версию, поскольку все пакеты могут быть установлены или удалены.

Если вы находитесь в согласованной и предсказуемой среде, не должно быть очень сложно определить, является ли это настольным компьютером или сервером.

Я использую только ubuntu-desktop (vanilla) или ubuntu server. Для меня это dpkg -l ubuntu-desktop это очень надежный способ определить, является ли это настольным компьютером или сервером.

Как упоминалось в связанном сообщении, нелегко определить, используете ли вы настольную или серверную версию, поскольку все пакеты могут быть установлены или удалены.

Вот моя функция, которую я использую для своих скриптов. В основном она проверяет, установлены ли xserver-common или xwayland. Если один из них установлен, это означает, что это настольная система.

#!/usr/bin/env bashcheck_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 environmentsdpkg -l compiz (E17, fluxbox and so one) # Window managerdpkg -l xorg # X window server

или использовать:

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

проверьте, запущен ли X-сервер:

ps -e | grep Xsudo netstat -lp | grep -i Xorg

Проверьте наличие служб, доступных только на рабочем столе:

Это зависит от вашей версии Ubuntu, как проверить службы:

sudo service *servicename* status # on SysVinit sudo status *servicename* # on Upstartsystemctl status *servicename*.service # on systemd

типичными услугами являются:

  • lightdm
  • x11-общий
  • gnome-оболочка

и некоторые другие, которые связаны с определенными производными


Мое приложение зависит от распределения сервера

Даже если нет никакого смысла запускать серверное приложение в настольной версии, не должно возникнуть никаких проблем с установкой всех зависимостей для вашего приложения в настольной версии и заставить его работать.

Можете ли вы подробнее объяснить, почему это зависит от дистрибутива сервера?

На этот вопрос нет четко определенного, просто сформулированного ответа.

Можно загрузить функции рабочего стола на сервер и удалить их с рабочего стола. Коренная проблема заключается в том, что какие пакеты являются частью функциональности сервера, и получит дополнительный период поддержки и обновлений.

То лучший ответ (ИМХО) можно найти в вопросе Launchpad (с 2008 года):

в чем разница между серверной и настольной версией?

https://answers .launchpad.net/ubuntu /+вопрос/40114

Я запускаю discovery в большой сети и пытаюсь отличить LINUX, установленный как рабочая станция, от сервера (потому что мы будем относиться к ним по-разному).

Я надеялся на атрибут или файл, в котором был Ubuntu-Server вместо Ubuntu.

Я нахожу несколько интересных файлов в /var/log/installer:

media-info говорит "Ubuntu-Server" для сервера и просто "Ubuntu" для рабочего стола.системный журнал показывает ту же информацию для "cdrom"

Оба они полезны, и я могу использовать их в сочетании с информацией об оборудовании. Это должно сообщить вам, по крайней мере, какая версия была установлена изначально.

Вы должны помнить, что нет принципиальной разницы между настольными и серверными версиями.

Однако весьма вероятно, что у вашего хостинг-провайдера нет всех графических элементов, таких как GNOME, на вершине стека, потому что в них нет необходимости. Установленные пакеты - это то, что делает его сервером.

Вас может заинтересовать ubuntu-maintenance-check сценарий (ссылка), который сообщает вам цикл обслуживания каждого установленного пакета - те, которые имеют более длительный период, являются серверными пакетами.

Проверьте существующие каталоги в главном каталоге. В настольной версии вы можете видеть такие папки, как Музыка, Загрузки, Рабочий стол.

Ни одно из вышеперечисленных решений не сработало для меня очень хорошо. Иногда в системе нет 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