Консольные игрища
АрхивДумаю, каждого старого пользователя DOS, помнящего убогую, однако местами удобную командную строку и впервые приобщившегося к Linux, не могли не поразить виртуальные консоли, реализующие многозадачность не менее эффективно, чем оконные системы графического режима. Этого достаточно, чтобы навсегда покорить сердце любителя текстового режима.
На двухконсольном кране
я работал,
Когда сломалась там
одна консоль…
Песня времен моей юности
Думаю, каждого старого пользователя DOS, помнящего убогую, однако местами удобную командную строку и впервые приобщившегося к Linux, не могли не поразить виртуальные консоли, реализующие многозадачность не менее эффективно, чем оконные системы графического режима (X Window и любые другие Окна и Форточки). Этого достаточно, чтобы навсегда покорить сердце любителя текстового режима 1.
Не хочу подробно останавливаться на том, что такое консоль, скажу лишь, что применительно к персональному компьютеру это, как правило, сочетание клавиатуры (устройства ввода) и экрана монитора (устройства вывода), так сказать, консоль физическая, или реальная. Но, кроме того, в Linux (и большинстве прочих Unix-подобных систем) существует понятие виртуальной консоли. Это - самостоятельные устройства ввода/вывода, мирно сосуществующие на одной машине, в которых могут проводиться независимые сеансы работы и между которыми, тем не менее, возможен обмен данными.
Как ни странно, виртуальным консолям уделяется до обидного мало места в книгах про Linux. Даже в «Запускаем Linux» Мэтта Уэлша и соавторов виртуальным консолям уделен один (!) абзац, в прочих же - в лучшем случае лишь упоминается о существовании таковых.
Прежде чем говорить о виртуальных консолях, необходимо упомянуть об уровнях загрузки ядра. Это - этапы, последовательно проходимые загружающейся системой (с возможностью фиксации на любом), каждый из которых предполагает включение (или, напротив, отключение) дополнительных возможностей. Так, первый уровень загрузки соответствует однопользовательскому режиму, позволяющему войти в систему без пароля, но не дающему доступа к сети или графическому режиму X Window. Эти возможности появляются на следующих уровнях (третьем и пятом соответственно), но без пароля на них уже не войдешь. По умолчанию при запуске Linux обычно реализуется третий (реже - второй или пятый) уровень. Уровни загрузки ядра перечислены в комментарии в начале файла /etc/inittab; там же указан тот, который принят по умолчанию (рис. 1).
По умолчанию во всех известных мне дистрибутивах Linux доступно (по нажатию комбинации клавиш Alt+F#, где # - номер графического дисплея) шесть виртуальных текстовых консолей. На седьмой консоли по умолчанию запускается сеанс X Window, и в текстовом режиме она кажется недоступной.
Однако шесть консолей - далеко не предел. Просто это количество задано по умолчанию в том же файле /etc/inittab (рис. 2), вообще же новые консоли в Linux создаются, как говорится, на лету, по мере надобности. Так, открытие второго сеанса X Window (к слову сказать, это делается, например, командой
xinit - :#
В данном случае # = 1, подразумевается, что нулевой дисплей занят под первый сеанс) автоматически создаст для него восьмую консоль, вызываемую нажатием Alt+F8.
Так же можно создавать и текстовые консоли, на что пригодна команда openvt с рядом опций: она отыскивает ближайшую теоретически доступную (то есть свободную) консоль и выполняет на ней указанную программу (примеры - в полной версии статьи на www.softerra.ru).
Однако созданные на лету консоли на лету же, по завершении заказанной команды, и исчезают. Сделать их наличие перманентным можно, отредактировав файл /etc/inittab, подробнее о котором - также на сайте.
Создание новых текстовых консолей никак не сказывается на консолях графических: они по прежнему будут открываться под следующим по порядку номером при запуске системы X Window. Такое их поведение описано двумя первыми полями (x и 5) в последней строке файла /etc/inittab.
Теоретически возможное число всех (и текстовых, и графических) консолей - 63, оно определяется номерами, зарезервированными за устройствами типа tty. Переключение между консолями с 1-й по 12-ю осуществляется нажатием левого Alt совместно с F1-F12; правый Alt плюс соответствующая функциональная клавиша, если повезет, даст доступ к следующим 12 консолям (не во всех дистрибутивах это работает, в ASPLinux, например, - нет). По остальному консольному богачеству, буде такая необходимость возникнет, проще всего перемещаться командой
chvt номер_консоли
Не уверен, что кому-либо могут потребоваться 63 (и даже 24) консоли, но 8-10 лишними не окажутся. У меня их задействовано 10, и еще в 11-й и 12-й открывается X Windows - второй графический сеанс я частенько использую (например, если нужно описывать GNOME, находясь в KDE).
И в заключение возникает резонный вопрос: какого лешего все это нужно, если можно открыть любой оконный менеджер и без труда наплодить там столько окон терминала, сколько захочется (да еще подчас и на нескольких виртуальных десктопах)? Дело в том, что работа с консолями имеет свои преимущества. Не буду распинаться насчет быстроты и нетребовательности к ресурсам, достаточно того, что переключаться между консолями удобнее, чем манипулировать окнами, которые норовят заслонить одно другое, или их приходится делать уж очень маленькими. С консолями же - всегда перед глазами полноразмерный экран во всей своей шири. А обмен данными между ними ничуть не сложнее, чем между окнами в графическом режиме.
[i40545]
1 (обратно к тексту) - Две другие фичи текстового режима Linux - пролистывание экранного буфера и выделение/вставка экранных блоков мышью - способны лишь усугубить восхищение, и посему здесь о них говорить не будем.