Сочетание тройника и tty

Я попробовал следующую команду, я прочитал ее из книги

sudo ls | tee /dev/tty3a

Эта команда дает мне Permission denied, даже с sudo .
Здесь tty – телетайп, я это уже знаю. Но что такое 3a с tty?

2 Solutions collect form web for “Сочетание тройника и tty”

Имена файлов устройств в /dev варьируются между вариантами Unix. Есть несколько, которые вы найдете везде, например /dev/tty означает текущий терминал. Похоже, что /dev/tty3a – это имя четвертого серийного порта¹ в некоторых вариантах Unix, включая Solaris и SCO OpenServer. Эквивалентом Linux будет /dev/ttyS3 . Таким образом, ls|tee /dev/tty3a дублирует вывод ls на четвертый последовательный порт.

Если в последовательный порт не подключено устройство, вы получите сообщение об ошибке («Ошибка ввода / вывода»). Если драйвер для последовательного порта отсутствует, вы получите другую ошибку («Нет такого устройства»). Если узел устройства даже не существует, вы, конечно, получите «Нет такого файла или каталога».

Если узел устройства существует, но у вас нет доступа к нему, вы получите сообщение об ошибке «Доступ запрещен». Если вы не используете root, или есть аппаратный терминал, подключенный к этому последовательному порту, и вы вошли в систему на этом терминале, вероятно, у вас нет разрешения на доступ к этому устройству.

Предполагая, что устройство присутствует, если вы хотите получить к нему доступ как root, вам нужно запустить команду tee как root, например

 ls | sudo tee /dev/tty3a 

Обратите внимание, что sudo ls | tee /dev/tty3a sudo ls | tee /dev/tty3a не будет работать, потому что он запускает только ls как root, команда tee не является аргументом sudo и работает как исходный пользователь. В этой команде труба создается исходной оболочкой, а вызов sudo составляет левую часть трубы. Если вы хотите запустить как ls и tee как root, вам нужно будет написать sudo ls | sudo tee /dev/tty3a sudo ls | sudo tee /dev/tty3a (с созданием трубы все еще в исходной оболочке). Если вы хотите запустить обе команды от имени root и выполнить настройку канала с правами root, вам нужно будет вызвать оболочку как root для настройки канала: sudo sh -c 'ls | tee /dev/tty3a' sudo sh -c 'ls | tee /dev/tty3a'

¹ Последовательные порты пронумерованы от 0.

Пример, который вы нашли в книге, показывает, что вы можете писать на своем и другом экране терминала одновременно. Войдите в систему два раза на одном сервере и запустите w и вы получите что-то вроде:

 $ w USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT joe pts/1 :0 21:53 0.00s 0.04s 0.00sw joe pts/2 :0 22:38 3.00s 0.01s 0.01s /bin/bash 

На первой консоли пишите:

 $ seq 3 | tee /dev/pts/1 

и вы получаете двойной выход.

Затем попробуйте на той же консоли

 $ seq 3 | tee /dev/pts/2 

и вы получите тот же результат на обоих экранах.

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

  • Как войти в систему пользователя tty из ssh?
  • Издевательство над псевдонимом (оч)
  • Подключите два устройства ttySx на одном компьютере
  • Есть ли способ reptyr процесса make или любого процесса с подпроцессами?
  • Почему существует разница в длительности выполнения команды с различными методами перенаправления?
  • Сценарий, запущенный на tty при загрузке, неправильно обрабатывает обратное пространство
  • Как я могу найти все файлы, чье имя начинается с «tty» в каталоге / dev со всей информацией о файлах?
  • Как запустить новый графический интерфейс с пользовательской командой из tty1?
  • Отправка последовательных команд с помощью сеанса echo vs screen
  • Как включить / отключить последовательный порт?
  • Выход MOZREPL, отображающийся в окне терминала
  • Linux и Unix - лучшая ОС в мире.