Почему UNIX / Linux предоставляет несколько терминалов?

8

В 1970-х у нас был аппаратный терминал с интерфейсом CUI (символьный пользовательский интерфейс) для ввода / вывода.

Теперь у нас есть эмуляторы терминала ( Ctrl+ Alt+ Fn) в мире Unix / Linux.

В ОС Ubuntu я вижу семь эмуляторов терминала, где GUI занимает 7-й эмулятор терминала ( Ctrl+ Alt+ F7).

Например, это мой первый эмулятор терминала ( Ctrl+ Alt+ F1)

$ tty
/dev/tty0

Почему Unix / Linux предоставляет несколько эмуляторов терминала?

overexchange
источник
8
На это всегда был спрос. Программа с именем «screen» использовалась, когда был доступен только один терминал.
VPfB
7
@vpfb Экран по-прежнему доступен и является неотъемлемой частью моего рабочего процесса!
tpg2114
1
Я думаю, что вы спрашиваете здесь не о эмуляторах терминалов (которые являются такими программами, как xterm, rxvt и т. Д., Которые работают как графические приложения под X), а о терминалах в текстовом режиме, которые не работают с графикой. Единственное использование, которое я действительно нашел для них (и это не для хороших нескольких лет), состоит в том, чтобы отлаживать вещи, когда X не работает должным образом. OTOH Я делаю большую часть своей реальной работы в окнах xterm, и у меня может быть от трех до дюжины или более открытых.
jamesqf
@jamesqf, почему бы тебе не вызвать ctrl + alt + f1 в качестве эмулятора терминала? Потому что это не аппаратный терминал CUI, который был у нас в 1970-х годах
overexchange
2
@overexchange: Я так их не называю, потому что это не терминология, используемая людьми, знакомыми с ними. Если вы выполните поиск «эмулятор терминала linux», вы получите множество результатов, большинство из которых не имеют ничего общего с консолями текстового режима, которые вы получаете с помощью Ctl-Alt-F [1-7].
jamesqf

Ответы:

25

Почему UNIX / Linux предоставляет несколько эмуляторов терминала [на консоли]?

По той же причине, что ваш эмулятор терминала с графическим интерфейсом, вероятно, поддерживает вкладки (например, терминал GNOME), а если нет (например rxvt), то по той же причине запуск второго экземпляра приложения терминала с графическим интерфейсом не просто выводит первый на передний план и завершается, заставляя вас использовать первый экземпляр.

Я обычно использую по крайней мере 3 окна терминала в своей работе, и часто больше:

  1. Текстовый редактор для серверной части системы, над которой я работаю

  2. Текстовый редактор для клиентской части той же системы

  3. Командное окно для запуска сервера

Мне редко нужен четвертый терминал для запуска клиентской программы, поскольку он обычно запускается где-то еще (веб-приложение, собственное приложение с графическим интерфейсом, мобильное приложение и т. Д.), Но если бы я разрабатывал клиент CLI для своего серверного приложения, у меня был бы отдельный терминал открыт для этого тоже.

Раньше, прежде чем sudoстать популярным, я все время держал rootтерминал открытым.

В настоящее время я редко использую блоки Unix / Linux в интерактивном режиме на консоли без графического интерфейса, но я часто запускаю их в автономном режиме и обращаюсь к ним по SSH. Мой клиент SSH-терминала по выбору поддерживает вкладки, настроенные как указано выше.

В одном из моих текущих хобби-проектов я иногда использую настоящий старый стеклянный терминал , что означает, что у меня больше нет нескольких окон терминала, поэтому я наконец-то немного узнал о GNUscreen , программе, которой я никогда раньше не пользовался, поскольку или несколько консольных терминалов или несколько терминалов GUI. А что делает screen? Помимо прочего, вы можете настроить его так, чтобы на одном экране было несколько виртуальных терминалов , как это делает Linux с Ctrl- Alt- .Fx

Уоррен Янг
источник
10
Преимущество экрана - помимо наличия нескольких терминалов на немом консольном терминале - это то, что вы можете отключаться, выходить из системы, снова входить в систему и повторно подключаться к сеансам, а также к процессу (процессам) или тому, что вы делали в терминах экрана продолжать.
ivanivan
В дополнение к тому, что сказал @ivanivan, другие люди могут видеть ваш экранный сеанс, и несколько человек могут просматривать его одновременно. Это похоже на совместное использование рабочего стола консоли.
Станри
Примечание: есть несколько вариантов использования чистого экрана superuser.com/q/423310
moooeeeep
18

Это функция, предоставляемая почти всеми, если не всеми Unix и Unix, такими как работа на оборудовании x86. Интересно, что виртуальные консоли были впервые представлены в Unix Microsoft Xenix в начале восьмидесятых годов, а также были доступны в параллельной версии CP / M.

Позже эта функция была интегрирована в AT & T SVR4 Unix, Solaris и заимствована BSD и Linux.

Почему UNIX / Linux предоставляет несколько эмуляторов терминала?

Когда они были впервые представлены, графической среды для машин, на которых выполнялись эти реализации Unix, не было. Хотя физический терминал, подключенный к центральному Unix-серверу через линии RS232, был стандартом, подключение нескольких терминалов к стандартному ПК, на котором работает Xenix, было излишним, если целью было только для одного пользователя запустить несколько интерактивных программ одновременно. Виртуальные терминалы предоставили элегантное и удобное решение этой проблемы.

Другие реализации Unix позже предоставили ту же функцию для удовлетворения той же потребности.

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

Обратите внимание, что утилиты, как screenи tmuxпришли намного позже, чем виртуальные терминалы, чтобы обобщить те же функции. Их преимущество в том, что они могут использоваться не только на локальной физической консоли, но и на любом сеансе, локальном или удаленном (например telnet, ssh). При использовании на физической консоли виртуальные консоли все еще полезны, поскольку они функциональны в некоторых ситуациях, когда screen/ tmuxне может помочь, например, если X11 заморожен, или если окно захватило фокус и не отпускает его.

Виртуализация на основе контейнеров, такая как зоны Solaris или Linux LXC, также предоставляет метод подключения к консоли контейнера через zlogin -C zoneи lxc-console -t 0 -n containerсоответственно.

jlliagre
источник
4

Я полагаю, что одной из веских причин наличия дополнительных эмуляторов терминала является то, что если вы делаете что-то не так в своем графическом интерфейсе, и это становится непригодным для использования, вы можете быстро переключиться на эмулятор терминала и исправить все проблемы, которые возникают в графическом интерфейсе. На самом деле это случается довольно часто, когда вы вносите изменения в свой оконный менеджер или другие функции графического интерфейса. Я полагаю, было бы также полезно иметь еще пару терминалов, однако наличие 6 перегрузок основного графического интерфейса кажется излишним.

Также поправьте меня, если я ошибаюсь, но разве невозможно запустить несколько команд под разными пользователями из одного эмулятора терминала?

user166213
источник
«если вы делаете что - то неправильно» - это объясняет , почему существует виртуальная консоль, а не почему существует множество (то есть ответить на другой вопрос). "не возможно ли запускать несколько команд под разными эмуляторами терминала от имени разных пользователей?" - да, но их результаты будут перепутаны, и запуск программ проклятий будет затруднен.
Радован Гарабик
4

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

Тем не менее, актуальный вопрос:

Почему Unix / Linux предоставляет несколько эмуляторов терминала?

«делает», а не «сделал».

Итак, ориентируясь на текущее время, вот несколько текущих причин:

  • Они могут быть удобными. Иногда вместо создания нового окна, которое покрывает другие окна на рабочем столе, я могу просто переключиться на другой терминал. Затем я могу вернуться обратно, так что рабочий стол - это передний план. В некоторых случаях (как правило, когда открыто несколько окон) это может быть более удобным, чем помещать окно терминала в фоновом режиме, а затем, позже, попытаться заставить это же окно выйти на передний план (вместо того, чтобы случайно выбрать другое окно терминала). окна, которые находятся на графическом рабочем столе).

    Например, я могу вспомнить, что Alt-Ctrl-F2 - это текстовый редактор, который просматривает один текстовый файл (например, документацию), а Alt-Ctrl-F3 используется для быстрого просмотра другого файла (например, файла конфигурации), и Alt-Ctrl-F4 используется для командной строки, в то время как графический рабочий стол может быть разделен между просмотром веб-страниц, электронной почтой, музыкальным проигрывателем и т. д.
  • Окна терминала могут быть полезны для работы с компьютером, если есть какие-либо проблемы с графическим дисплеем. Для людей, у которых может быть актуальная необходимость использовать (возможно, настроенный) компьютер, на котором нет графической видеокарты, эта функциональность может оказаться необходимой. Существует также возможность будущих потребностей (возможно, с последующей / наследующей операционной системой), которые могут быть в дополнение к любым существующим текущим потребностям.
    • Эти текстовые терминалы, как правило, используют меньше ресурсов. Например, они, как правило, используют меньше памяти на видеокарте. Таким образом, если бы у видеокарты была физическая неисправность, которая нарушала функциональность 3-го и 4-го мегабайта видеопамяти, это могло бы даже не затронуть кого-то, кто использует только классические текстовые терминалы. Более простые процессы, которые используют меньше ресурсов, могут быть полезны при выполнении восстановления.
  • Код уже существует. Поэтому поддерживать их легко.
  • Количество ресурсов для неиспользуемого терминала (до входа в систему) очень мало. Даже этот маленький объем памяти может быть повторно востребован путем настройки / etc / ttys
  • Код для поддержки нескольких терминалов довольно похож на код для поддержки ввода-вывода через последовательные соединения. Разработчики операционных систем очень ценили это. С достижениями в виртуальных машинах ценность использования последовательных соединений менее критична, чем раньше. Тем не менее, некоторые разработчики ядра (уже знакомые с процессом) могут использовать такое оборудование. Организации, использующие старое оборудование, также могут увидеть выгоду в том, что нет необходимости менять оборудование.

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

На самом деле, удаление поддержки для этого может быть больше работы, чем просто оставить поддержку там. Хотя удаление поддержки, вероятно, будет простым, если что-то сломается, то выявление и устранение проблемы может быть немного сложным. Таким образом, сокращение объема необходимых усилий (для разработки следующей версии операционной системы) является еще одной причиной, чтобы оставить все как есть. Это означает, что эта функция остается доступной.

TOOGAM
источник
Наличие исторической перспективы часто полезно. Вы говорите, что хотите сосредоточиться на настоящем, но в конце концов делаете вывод: «Одна из причин, почему Unix / Linux в настоящее время предоставляет несколько эмуляторов терминала, заключается в том, что они действительно предоставили их в первую очередь…»
jlliagre
Да. Это сделал. Если это не так, возможно, не сегодня. Но поскольку Unix сделал, это остается убедительной причиной, почему это так. Я никоим образом не хотел минимизировать полезность знакомства с прошлым. Моя естественная тенденция состояла в том, чтобы сосредоточиться на том, почему это было добавлено (и мой первый или два проекта содержали это более подробно), но моя основная причина, чтобы попытаться сосредоточиться на настоящем, - это то, что задал вопрос. Кроме того, в других ответах упоминалось прошлое, и я попытался сделать полезный ответ, добавив к тому, что было сказано, вместо того, чтобы просто дублировать то, что уже было сказано в другом месте на странице.
TOOGAM
3

Первое, о чем вы спросили, - это особенность ядра под названием Linux. Не Unix вообще и не Gnu.

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

Ctrl-Alt-Делор
источник
Да, ядра ядра устанавливаются пользовательским кодом, и да, есть некоторые другие Unix, у которых они есть. Однако это не общая вещь Unix.
Ctrl-Alt-Delor