Почему так много виртуальных консолей?

В чем причина наличия такого количества виртуальных консолей?

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

4 ответа

Решение

Краткий ответ: почему нет? (подразумеваемая улыбка, пожалуйста)

Более длительный: я полагаю, это в основном история. Там где 6 виртуальных консолей настроены с getty в первом linux, который я загрузил с поддержкой VC, я действительно забыл, когда (это было около 1990 года, я думаю). Затем, когда вы начали графическое окружение (вручную, сstartx) он открыл себя на первом свободном VC, который оказался № 7. И я по-прежнему выполнял большую часть своей работы над венчурными капиталистами в то время: редакторы были намного быстрее, и иногда я использовал больше венчурных капиталистов, чем стандартная шестерка, и мой ноутбук не был точно графическим монстром...

Например, я использовал три редактора (программу, ее входные данные, описывающий ее файл TeX), один VC для компиляции, другой для чтения руководства и другой, подключенный через telnet к моему почтовому серверу.

Я подозреваю, что обоснование для того, чтобы по-прежнему использовать шесть виртуальных консолей, состоит в том, чтобы позволить графическому VC на #7 для всех, чтобы вы могли писать руководства ".Ctrl-Alt-F7" и не "Ctrl-Alt-Fx где x это первый бесплатный ВК ".

Как примечание стороны, вы можете (я полагаю - никогда не пытался) обрезать VC. Просто делай

 sudo bash -c "echo 'manual' >> /etc/init/tty6.override"

чтобы остановить VC#6, следуя инструкции выскочки.

Все /dev/tty* записи являются чем-то известным как device fileв соответствии с философией Unix. Они служат связующим звеном между пользователем и фактическим устройством, но их назначение может немного отличаться.

Виртуальные консоли

Файлы устройства, такие как /dev/tty123 Может использоваться для взаимодействия с системой через обычную оболочку. Это виртуальные терминалы. Система Ubuntu настроена на открытие по умолчанию TTY с 1 по 6, но можно вручную открыть больше, например:

sudo openvt -c 9 -s "bash"

Что откроется bash от имени пользователя root на /dev/tty9 и немедленно переключите вас на этот TTY. Сделать то же самое без sudo от имени пользователя root вы должны сменить владельца tty, который хотите открыть. Например,

$ sudo chown xieerqi:tty /dev/tty8 
$ openvt -c 8 -l 

Это будет входить в систему с моей оболочкой по умолчанию на tty8. В моих тестах, однако, кажется, что это работает только через TTY, поэтому, если вы делаете это через эмулятор терминала, это может не сработать (я получал Couldn't get a file descriptor referring to the console ошибка и только sudo openvt -c 8 -l у меня сработало из эмулятора)

С исторической точки зрения, до того, как были созданы все модные терминальные мультиплексоры, это была полезная функция - вы могли создавать до 62 команд (возможно, серверов) на этих консолях и запускать их, работая в 63-м. В наше время это может быть не так необходимо.

Есть несколько файлов устройств, созданных по умолчанию. Активные - от 1 до 6, но их можно изменить, отредактировав /etc/default/console-setupконкретно эта часть:

# Setup these consoles.  Most people do not need to change this.
ACTIVE_CONSOLES="/dev/tty[1-6]"

устройства ttyS*

Это файлы устройств, используемые для последовательных консолей, или UART (также известный как RS-232). В прошлом многие компьютерные системы поставлялись с последовательным портом. В настоящее время это в основном можно найти на компьютерах серверного типа. Несколько устройств ttyS могут быть полезны с концентраторами RS-232, которые позволяют управлять несколькими устройствами через USB или Ethernet.

Для инженеров-электриков (это то, чем я занимаюсь в колледже), мы используем последовательный порт для взаимодействия с микроконтроллерами и платами разработки (например, Arduino). Однопортовые компьютеры, такие как Raspberry Pi, также используют его. В настоящее время последовательное соединение устанавливается с помощью кабеля USB-UART, а консоль открывается в терминале через screen вот так:

screen /dev/ttyUSB0 115200 # the number is baud rate or speed

Обратите внимание, что Arduino и Raspberry создадут свой собственный файл устройства для последовательного соединения, /dev/ttyUSB0 или же /dev/ttyACM0

VCS * устройства

В соответствии с man vcs это консольные запоминающие устройства. Проще говоря, если вы делаете sudo cat /dev/vcs1 вы увидите, что на экране в /dev/tty1 по крайней мере, до максимального количества линий в этом терминале.

Уменьшение количества консолей

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

sudo bash -c 'for num in $(seq 10 63 ) ; do MAKEDEV -v -d "tty$num" ; done'

Это, однако, несколько бессмысленно - файлы устройств не занимают места и не влияют на производительность системы.

Почему не больше? Бежать top или же htop в одном (дает статика использования процессора / памяти), ssh к другим системам в 2 или 3, запустите какое-то автоматическое задание в другом, оставьте одно на всякий случай свободным, войдите к нескольким пользователям еще через несколько, запустите cmatrix на одном запустить GUI в другом с помощью -

startx -- :1

(некоторые графики имеют ошибки с этим)

http://mostlylinux.wordpress.com/troubleshooting/ttysessions/

Когда вы действительно начнете использовать эту функцию, 7 tty (седьмой по умолчанию) кажутся немногим - и вы можете добавить больше.

Чтобы уменьшить количество: Как я могу уменьшить количество TTY?

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

Другие вопросы по тегам