Tty linux что это

Обновлено: 07.07.2024

"tty" - сокращение от "телетайп". Первые терминалы были телетайпами (типа дистанционно управляемых пишущих машинок). См. подраздел ``Телетайпы".

5.1 Терминал на последовательном порту

Компьютер рассматривает терминал как устройство на последовательном порту.

Для каждого такого терминала имеется специальный файл в каталоге (устройств) /dev. /dev/ttyS0 - специальный файл для последовательного порта, известный как COM1 в мире DOS/Windows. Чтобы посылать текст терминалу, вы можете переназначить стандартный вывод некоторой команды в командной строке соответствующему специальному файлу. Например команда "echo test> /dev/ttyS1" должна послать слово "test" на терминал, подключенный к COM2 (подразумевается, что вам разрешена запись в /dev/ttyS1). Точно так же "cat my_file > /dev/ttyS0" пошлет содержание файла my_file в COM1 (ttyS0).

В дополнение к ttyS0 (/dev/ttyS0), ttyS1, ttyS2, и т.д. ("S" означает последовательный порт) имеется также ряд устройств "cua": cua0, cua1, cua2, и т.д.

сua0 - тот же самый порт как ttyS0 и т.д. "Cu" cua означает CalloUt. Серия устройств ttyS соответствуют Posix, в то время как при использование cua можно открыть порт, про который линии управления модемом говорят, что он не готов. Это говорит о том, что ряд cua включен только для обратной совместимости, так что вы видимо должны использовать ряд ttyS.

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

Псевдо терминалы не имеют уникального физического разъема на компьютере.

Они используются для эмуляции последовательного порта. Например, если кто-то соединяется через telnet с вашим компьютером по сети, они могут подсоединиться к устройству /dev/ptyp2 (порт псевдотерминала). В XWINDOWS, программа эмуляции терминала xterm использует псевдотерминалы.

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

Псевдотерминалы образуют пары типа ttyp3 и ptyp3. pty. - это хозяин или управляющий терминал, а tty. - подчиненный. ttyq5 - также псевдотерминал, как - ttysc (с - шестнадцатеричная цифра).

Более точно, главные псевдотерминалы - /dev/pty[p-s]n, а соответствующие подчиненные - /dev/tty[p-s]n, где n - шестнадцатеричная цифра.

5.3 Управляющие терминалы /dev/tty

/dev/tty означает управляющий терминал (если есть) для текущего процесса (процесс, который использует "/dev/tty" в команде). Чтобы выяснять, к которому tty присоединен процесс, используют команда "ps -a" в командной строке. Посмотрите столбец "tty". Для оболочки, в которой вы находитесь, /dev/tty - это терминал, который вы сейчас используете.

Напечатайте "tty" в командной строке, чтобы увидеть название терминала (см. man tty(1)). /dev/tty - нечто вроде связи с фактически именем устройства терминала с некоторыми дополнительными возможностями для программистов на C : см. man tty(4).

5.4 "Терминалы" /dev/ttyI?

? означает целое число. Одно из применений их в Linux - пакетный драйвер ISDN: isdn4linux. ttyI? является неким подобием ttyS? . Имеется также cui? , который является кое-чем вроде cua?. ttyI и cui эмулируют модемы и могут принимать команды модемов.

5.5 Консоль: /dev/tty?

5.6 Создание устройства командой mknod

В каталоге /dev находится множество специальных файлов устройств. Если нужных вам файлов нет там, то вы можете попробовать создать их командой "mknod". См. man-страницу tty(4) для информации о том, как сделать это для последовательных портов. Чтобы использовать mknod, вы должны знать major и minor числа устройства. вы можете посмотреть нужные вам числа, используя команду "ls -l" в каталоге /dev. Она отобразит major и minor числа существующих специальных файлов.

Все новички Linux уже, наверное, слышали про терминал, или как его еще называют командную строку. Ведь присутствие и сложность терминала - это один из основных аргументов оппонентов Linux. Возможно, вы уже сталкивались с командной строкой в Windows на практике и уже знаете что это такое.

Действительно, в операционной системе Linux есть терминал, где вы можете выполнять нужные вам команды, чтобы очень эффективно управлять своей системой. Но это вовсе не обязательно, многим вполне достаточно графического интерфейса. Сейчас использование терминала отошло на второй план, но он остается основным средством для доступа к удаленным серверам и инструментом для профессионалов.

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

Что такое терминал Linux?

Применение терминала началось очень давно. Еще до того как была создана DOS и не существовало никакого графического интерфейса. В далеких восьмидесятых годах операционная система Unix только начинала развиваться. Пользователям нужно каким-то образом взаимодействовать с системой и самый простой способ - это использование команд. Вы вводите команду, система вам возвращает ответ.

С тех пор, такой способ ввода использовался во многих системах, в том числе DOS и OS/2 от Apple, пока не был придуман графический интерфейс. Затем текстовый режим терминала был успешно вытеснен, но его до сих пор продолжают использовать там, где это нужно.

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

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

Консоль - это физическое оборудование для управления сервером. Когда к серверу нет доступа из сети, для управления им можно использовать только консоль.

Эмулятор терминала - это графическая программа, которая предоставляет вам доступ к tty или pts терминалу. Например, Gnome Terminal, Konsole, Terminix, Xterm и многие другие.

Командная оболочка - устройство tty занимается только передачей и приемом данных, но все эти данные должен еще кто-то обрабатывать, выполнять команды, интерпретировать их синтаксис. Командных оболочек достаточно много, это bash, sh, zsh, ksh и другие, но чаще всего применяется Bash.

Ну и командная строка - это то место куда вы будете вводить свои команды, приглашение терминала для ввода.

Теперь, когда мы разобрались что такое терминал Linux и знаем все основные принципы, перейдем к практике работы с ним.

Как открыть терминал Linux?

Есть несколько способов получить доступ к терминалу. Ваша система инициализации по умолчанию создает 12 виртуальных терминалов. В одном из них - обычно седьмом, запущена ваша графическая оболочка, но все другие могут быть свободно использованы. Для переключения между терминалами можно использовать сочетания Ctrl+Alt+F1-F12. Для авторизации нужно будет ввести логин и пароль.

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

Второй способ позволяет открыть виртуальный терминал прямо в графическом интерфейсе с помощью эмулятора терминала. Эмулятор терминала linux работает с файлами в каталоге /dev/pts/* и еще называется псевдотерминалом, потому что не использует tty.

В Ubuntu вы можете запустить терминал linux нажав сочетание клавиш Ctrl+Alt+T:

terminal

Также его можно найти в меню приложений Dash:

terminal1

Как видите, открыть командную строку в linux очень просто.

Выполнение команд в терминале

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

Вы можете набрать что-либо и убедиться, что это работает:

terminal2

Чтобы выполнить команду достаточно написать ее и нажать Enter.

terminal3

Более того, командная оболочка Bash поддерживает автодополнение, поэтому вы можете написать половину команды, нажать TAB и если на такие символы начинается только одна команда, то она будет автоматически дополнена, если же нет, то вы можете нажать два раза TAB, чтобы посмотреть возможные варианты.

terminal4

Точно такая же схема работает для путей к файлам и параметров команд:

terminal5

terminal6

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

terminal7

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

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

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

$ команда опции параметр1 параметр2.

Опции часто необязательны и уточняют тот или иной аспект работы программы. Они записываются в форме черточка и символ или двойная черточка и слово. Например -o или --output. Приведем пример для команды ls. Без опций и параметров:

terminal8

С параметром, указывающим какую папку посмотреть:

terminal9

С опцией -l, вывести в виде списка:

terminal10

В с опцией и параметром:

terminal10

Можно комбинировать две опции:

terminal11

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

Выводы

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

Работа с устройствами в Linux очень сильно отличается от Windows. Главная концепция Linux в том, что все есть файл, не только пользовательские файлы с информацией, но и различные настройки ядра, подключенные устройства, память, сетевые соединения, все это представлено в виде файлов, которые размещены в специальных файловых системах.

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

Файлы устройств Linux

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

Самое важное, что нужно знать об этих файлах - это не драйверы устройств, их лучше рассматривать как интерфейс доступа к драйверам устройств. Приложение отправляет данные в файл устройства, откуда они читаются драйвером устройства и отправляются на физическое устройства. Обратная передача от физических устройств тоже проходит по этому пути через файл устройства. Давайте посмотрим как будет выглядеть поток передачи данных для типичной команды, например, cat:

dboth-dev-dir_0

На схеме приведена схема передачи данных для команды cat /etc/resolv.conf. Вы выполняете команду из терминала, утилита отправляет запрос файла драйверу, который ищет файл на диске и читает его содержимое. Данные передаются через файл устройства, а затем опять же, через файл устройства псевдо-терминала передаются в эмулятор терминала 6, где они будут отображены.

Если мы перенаправим вывод команды в файл, например, cat /etc/resolv.conf > /etc/resolv.bak, то левая часть схемы останется неизменной, а правая сторона будет вести к файлу устройства /dev/sda2. Эти устройства делают очень простым использование стандартных потоков ввода/вывода для доступа к каждому устройству. Простое перенаправление потока данных в файл устройства приведет к записи данных на устройство.

Классификация файлов устройств

Файлы устройств можно классифицировать по меньшей мере двумя способами. Первая и наиболее широкая классификация - на основе потока данных. В устройствах TTY и других символьных устройствах, данные обрабатываются по одному символу или байту за раз. В блочных устройствах, таких как жесткие диски данные передаются блоками, как правило, с размером, кратным 256 байт.

Если вы еще этого не делали, то перейдите в папку /dev/ и посмотрите список находящихся там файлов с помощью команды ls. Вы увидите очень длинный список файлов с их правами доступа, владельцами и группами - это список устройств linux. Обратите внимание на самый первый символ в каждой строке. Он указывает тип устройства. Символом "b" - обозначаются блочные устройства linux (block), а символом "c" - символьные (character).

device

Более точно можно идентифицировать устройства по их младшему и старшему номеру. Например, жесткие диски имеют старший номер 8, что обозначает их как блочные устройства SCSI. Обратите внимание, что все жесткие диски PATA и SATA находятся под управлением SCSI. Раньше использовалась подсистема ATA, но она уже устарела, поэтому диски, которые раньше обозначались как hd[a-z] теперь обозначаются sd[a-z].

Младший номер диска означает раздел устройства, например, номера 8/0 - это весь диск /dev/sda, а 8/1 уже файл первого раздела на диске, 8/6 - /dev/sda6. Файлы TTY именуются немного по-другому, от tty0 до tty63. Все значения старших номеров устройств Linux вы можете найти на официальном сайте ядра.

Работа с устройствами в Linux

Давайте проведем несколько экспериментов, которые помогут вам понять как работают устройства Linux и как ими управлять в этой операционной системе. Большинство дистрибутивов Linux имеют несколько виртуальных консолей, обычно от 1 до 7, которые могут использоваться для входа в сеанс командной оболочки. К этим виртуальным консолям можно получить доступ с помощью сочетаний клавиш Ctrl+Alt+Fn, например, Ctrl+Alt+F1 для первой консоли, Ctrl+Alt+F2 для второй и так далее.

Сейчас нажмите Ctrl+Alt+F2 для перехода во вторую консоль, в некоторых дистрибутивах, кроме запроса логина и пароля, будет выведена информация про активную TTY связанную с этой консолью. Но этой информации может и не быть. В данном случае консоль будет связана с устройством tty2.

Войдите от имени обычного пользователя, затем наберите такую команду, чтобы посмотреть номер устройства tty:

device4

У меня вы видите устройство /dev/pts/0, это виртуальное устройство эмулятора терминала, но если вы будете выполнять задачу в tty2, то отобразиться именно она. Теперь давайте посмотрим список tty устройств с помощью команды ls:

device1

Нас будут интересовать не все устройства, а только первые три. В этих устройствах нет ничего особенного, это обычные устройства символьного типа. Устройство tty2 подключено к консоли 2, устройство tty3 подключено к консоли 3.

Нажмите сочетание клавиш Ctrl+Alt+F3, чтобы переключиться в третью консоль, затем выполните команду:

echo "Hello world" > /dev/tty2

device6

Затем вернитесь во вторую консоль. Здесь вы увидите отправленную строку, Hello World. Все это можно повторить с помощью эмуляторов терминала в графическом интерфейсе, только здесь будут использоваться псевдо-терминальные устройства /dev/pts/*. Теперь попробуем отобразить содержимое файла fstab с помощью cat в другом терминале:

cat /etc/fstab > /dev/tty2

device5

cat test.pdf > /dev/usb/lp0

Каталог /dev/ содержит много интересных файлов устройств. Это интерфейсы доступа к аппаратному обеспечению и вам не нужно думать, что это, жесткий диск или экран. Например, вся оперативная память компьютера доступна в виде устройства /dev/mem. С помощью него вы можете иметь прямой доступ к памяти. Мы можем вывести содержимое памяти в терминал:

dd if=/dev/mem bs=2048 count=100

device2

Утилита dd, в отличие от cat дает больше контроля над процессом и позволяет указать сколько данных нужно прочитать. Но не ко всей памяти вы можете получить доступ. В ядре встроена защита, поэтому обычно, вы можете читать память, только для своего процесса.

Также тут есть файлы, которые несвязанны ни с какими реальными устройствами, это null, zero, random и urandom. Устройство /dev/null может использоваться для перенаправления вывода команд, чтобы данные никуда не выводились. Устройство /dev/zero используется для получения строки, заполненной нулями.

Вы можете использовать ту же команду dd, чтобы попытаться вывести ряд символов с устройства /dev/null:

dd if=/dev/null bs=512 count=500 | od -c

device7

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

Устройства /dev/random и /dev/urandom позволяют получить случайные комбинации чисел или байт. Вы можете использовать такую команду, чтобы получить случайные байты информации:

device3

Для остановки нажмите Ctrl+C. Устройство urandom позволяет генерировать случайные последовательности независимые от предыдущего числа, в качестве источника энтропии используется нажатия клавиш и движения мыши.

Устройство /dev/zero позволяет получить строку, заполненную нулями. Для проверки используйте такую команду:

dd if=/dev/zero bs=512 count=500 | od -c

device8

Обратите внимание, что восьмеричные нули и нули ASCII это не одно и то же.

Создание устройств в Linux

В прошлом все устройства из каталога /dev создавались во время установки системы, а это означало, что каталог содержал все возможные поддерживаемые устройства, даже если они не использовались. Если вам нужно было создавать или переинициализировать файлы устройств, использовалась утилита mknod. Но для работы с ней вам нужно знать старший и младший номер устройства.

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

Команда mknod все еще есть, но уже существует более новая разработка - makedev. Она предоставляет очень простой интерфейс для создания устройств.

Выводы

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

Команда w — «родная сестра» команды who, о которой мы уже писали. Работает она благодаря одноименной сервисной программе. С помощью w пользователи Linux получают информацию об учетных записях, которые были активны в системе с момента включения компьютера, а также о действиях, воспроизводимых с каждого аккаунта.

Используя команду w, можно узнать имена активных учетных записей, время их регистрации в системе и бездействия, названия терминалов, соединенных со стандартным вводом (tty), а также JCPU (время, использованное всеми процессами под управлением tty) и PCPU (время, использованное текущим процессом). Текущие процессы, которыми занята каждая из учетных записей, также будут отображены в выводе команды.

Синтаксис и опции w

Запись команды w в пользовательском терминале выглядит так:

$ w опции имя_аккаунта

Впрочем, заморачиваться не обязательно — можно написать только букву w. В таком случае утилита сообщит все доступные ей данные обо всех учетных записях. Если же нужно получить информацию без лишнего «мусора», стоит задать команде один или несколько параметров. На данный момент доступны такие опции:

  • -h (--no-header) — отказ от вывода заголовков.
  • -u (--no-current) — приказ определять JCPU и PCPU, игнорируя имена учетных записей.
  • -s (--short) — краткий формат вывода.
  • -f (--from) — управление выводом имени хоста или IP-адреса, с которого был осуществлен вход в систему.
  • -i (--ip-addr) — замена информации об имени хоста на IP-адрес.
  • -o (--old-style) — отображение вывода в старом формате.

Примеры использования команды w

Начнем с самого простого варианта — команды без опций:

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


Если к w linux применить параметр -h, заголовки у столбцов исчезнут. Новичкам так поступать не стоит, а то придется читать вывод наугад.


Тем, кто независимо от наличия или отсутствия заголовков, не совсем понимает, о чем идет речь в выводе команды, дадим подсказку-расшифровку:

  • USER – имя учетной записи.
  • TTY – название терминала.
  • FROM – имя хоста или IP адрес, с которого пользователь вошел в систему под конкретной учетной записью.
  • LOGIN – время, когда та или иная учетная запись впервые с момента включения машины зарегистрировалась в системе.
  • IDLE – время, когда пользователь проявил активность с определенного аккаунта.
  • JCPU – время, использованное всеми процессами, запущенными в терминале tty.
  • PCPU – время, использованное текущим процессом (каким именно — можно посмотреть в столбце WHAT).
  • WHAT – текущие процессы и команды, которыми занят пользователь под конкретной учетной записью.

Опция -u заставляет команду подсчитывать время, использованное текущим процессом и всеми процессами в tty, не обращая внимания на названия учетных записей. Использовать ее следует от имени администратора (добавляя перед командой su либо sudo):

Для сравнения на скриншоте показан вывод команды с параметром -u и без оного.


Опция -s заметно урезает количество данных, выводимых командой. Время входа в систему, JCPU и PCPU показаны не будут.


А вот -f может работать по-разному. В зависимости от того, как настроена утилита w, эта опция включает или выключает вывод имени хоста (столбец FROM в терминале). Если по умолчанию этот самый вывод включен, имя хоста будет исключено из перечня демонстрируемых данных. В противном случае имя хоста появится в выводе команды.


Чтобы вместо имени хоста отображался IP-адрес, достаточно использовать команду w c параметром -i.

Давние пользователи Linux оценят параметр -o. Если применить его к команде w, вывод будет выглядеть так, как раньше — вместо числовых данных в столбцах IDLE, JCPU и PCPU появятся пустые строчки. Правда, произойдет это лишь при одном условии — когда количество времени, подсчитанное командой, составляет меньше 60 секунд.


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

Что же касается имени аккаунта, то его имеет смысл указывать в записи команды, если на машине существует несколько разных учетных записей (к примеру, admin, user и guest_session_for_cat_Murzik).

Выводы

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

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Читайте также: