Допустим, вы загрузили установку Linux до самого рабочего стола. Вы запускаете gnome-терминал / консоль / что угодно, поэтому у вас есть tty для ввода команд.
Теперь, скажем, я SSH в той же машине. Это свяжет меня с другим tty для ввода команд.
Теперь допустим, что я хочу «переключить» мой tty с моего исходного SSH на gnome-терминал, запущенный ранее.
В основном я спрашиваю, есть ли способ сделать то же самое screen -x
, но без экрана?
Я знаю, что вы легко можете отправить вывод другому tty, просто вставив что-то в файл / dev, но я не знаю способа «просмотреть», что находится в tty.
Есть идеи?
terminal
gnu-screen
terminal-multiplexer
user488244
источник
источник
Ответы:
Возможно, эти схемы могут прояснить ситуацию. Это обычная настройка:
И нет никакого способа подключить что-то новое
Process3
:Что делает экран (и другие), так это выделяет какое-то псевдотерминальное устройство (как это делает xterm) и перенаправляет его на один или несколько «реальных» терминалов (физических, виртуальных или эмулируемых):
Используя
screen -x
вы можете прикрепить еще один терминал, xterm, что угодно (скажемTerminal 3
) к экранной сессии.Так что нет, вы не можете напрямую общаться через stdin / stdout с процессами, подключенными к другому терминалу. Вы можете сделать это только через процесс, который управляет этим терминалом, если он окажется псевдотерминалом, и если этот процесс был завершен (например, screen).
источник
ptrace
; благодаряptrace
, такие программы, какneercs
,retty
и так далее, могут делать это иногда.stdin
,stdout
в правой части схемы) непосредственно угон процесса. Чистое зло!Повторное подключение процессов на другом терминале к текущему терминалу невозможно без грязных уловок. Это возможно, заставляя процесс выполнять определенные системные вызовы (с
ptrace
); это вызывает сбой некоторых программ. Есть несколько инструментов , которые делают это, напримерneercs
,retty
,cryopid
,reptyr
, ...; см. Как я могу отречься от запущенного процесса и связать его с новой оболочкой экрана? и связанные вопросы.Получение вывода, уже отображенного на другом терминале, является другой проблемой. Не существует полностью общего решения: в принципе, после вывода вывода терминал может сохранить его только в виде изображения. На практике все эмуляторы X-терминала сохраняют свой выходной буфер в текстовой форме, чтобы вы могли скопировать и вставить его. Способ получения этого вывода зависит от эмулятора терминала; Основная идея состоит в том, чтобы смоделировать выбор всего буфера прокрутки. Для консоли Linux, такой как
/dev/tty1
, буфер прокрутки легко доступен как/dev/vcs1
(и/dev/vcsa1
с текстовыми атрибутами).Ответ прост: если вы хотите подключиться к терминалу из другого места, используйте
screen
илиtmux
.источник