Компания ALT Linux
Опубликован: 14.12.2004 | Доступ: свободный | Студентов: 12252 / 1453 | Оценка: 4.19 / 3.84 | Длительность: 18:18:00
ISBN: 978-5-9556-0019-1
Лекция 8:

Устройства, терминалы и процессы

< Лекция 7 || Лекция 8: 1234 || Лекция 9 >

Псевдотерминалы

Большую часть терминалов-устройств в /dev составляют даже не виртуальные консоли, а так называемые псевдотерминалы. Это довольно курьезные устройства, не имеющие не только соответствующей аппаратной части, но даже и программной! UNIX управляется посредством терминала. Терминал не обязан быть аппаратным устройством (это мы видели на примере виртуальной консоли ). На самом деле, любой источник адресованных системе команд в виде потока байтов может быть терминалом. Например, при установлении терминального соединения по сети роль дисплея и клавиатуры выполняет специальный демон (в последнее время для этого используется пакет Secure Shell, имя демона - sshd ). Используя соответствующую утилиту (в нашем случае - ssh ), пользователь подключается с одного компьютера к демону, запущенному на другом. Утилита читает с терминала пользователя и преобразует введенное сообразно сетевому протоколу SSH, после чего данные отсылаются демону. Демон преобразует полученное обратно в текстовый вид и записывает в специальное устройство по имени /dev/ptyp (точнее сказать, /dev/ptyp0, /dev/ptyp1 и т. д., так как для каждого такого сеанса связи необходимо свое устройство ).

Устройство /dev/ptyp0 и остальные - очередной пример хитроумной файл-дырки: все, что записано в него, немедленно выводится на /dev/ttyp0, а все, что попадает в ttyp0, перенаправляется в ptyp0. И вот ttyp - уже полноценный терминал, с ним может быть связана по вводу какая-нибудь программа (скорее всего, shell ), данные передаются в подготовленном виде, сигналы поступают и т. д. Нетрудно догадаться, что ttyp и есть псевдотерминал. Пара ptyp - ttyp напоминает канал ("|" из конвейера, описанного в лекции 11), с одним существенным отличием: эти устройства асимметричны, только ttyp работает как терминал: обрабатывает входной поток и подает сигналы.

Псевдотерминалами пользуется всякая программа, желающая заменить терминал: например, многочисленные варианты эмуляторов терминала для графической системы X Window ( xterm, rxvt, gterm, konsole и т. д.). С одной стороны, обилие графических инструментов не может полноценно заменить командную строку, а с другой - диктует определенные принципы оформления. Поэтому для каждого вида рабочего стола в X Window существует своя программа, имеющая графическое окно, весьма похожее на терминал. Здесь, увы, возродилась традиция неразберихи в характеристиках: многие из них представляются системе как xterm (ортодоксальный эмулятор терминала для X Window), а в действительности слегка отличаются от него по управляющим последовательностям.

Кроме того, ptyp использует утилита screen, которая из одного канала передачи данных делает несколько терминалов (просто открывая несколько псевдотерминалов и переключаясь между ними; это удобно, если консоль в системе всего одна). У screen есть еще одно полезное свойство: его можно отсоединить от реального терминала, на котором он был запущен. При этом псевдотерминалы не освобождаются, и UNIX продолжает считать, что пользователь все еще работает в системе на нескольких терминалах, просто не вводит никаких команд. Впоследствии screen можно вновь присоединить к любому другому терминалу и продолжить работу.

Вы можете, скажем, поработать в screen за консолью системы и запустить там два сеанса shell: в одном поставить собираться из исходных текстов какой-нибудь большой проект (что иногда длится часами), а во втором вызвать текстовый редактор vi, да так и бросить. После чего вы отсоединяете screen от консоли ( ^A^D ) и заканчиваете работу. Приехав вечером домой, вы, возможно, захотите проведать, как там идет сборка. Подключившись по Internet при помощи ssh к системе, вы присоединяете screen к текущему терминалу ( screen -r; теперь он использует псевдотерминал, а не консоль, но какая системе разница?) и видите оба сеанса: в одном продолжается сборка, а в другом запущен и ничего не делает vi.

Во многих системах вы увидите изрядное количество ttyp и ptyp в /dev. Они заведены там впрок; программа, которая захочет открыть ptyp, получит первый, никем еще не занятый. Другие системы используют динамический метод выделения ptyp: очередное устройство создается, когда в нем возникает необходимость, и удаляется из /dev/, как только будет закрыто.

< Лекция 7 || Лекция 8: 1234 || Лекция 9 >
Andranik Avakian
Andranik Avakian

41. УК РФ и Комментарии (ст. 273)

М. 2000 г. Издательство: ALT Linux, Институт Логики

Уголовный Кодекс РФ и комментарии к нему?

По ссылке открывается сайт документации Linux, раздел Linux Installation and Getting Started

Сергей Петровский
Сергей Петровский

У Вас написано:

ls -dt1 `grep -il отчет *` | head -1

если знания по шелу мне не изменяют, то должно быть:

ls -dt | `grep -il отчет *` | head -1