Terminal

如何在不使用螢幕的情況下在 tty 之間切換?

  • April 6, 2019

因此,假設您將 Linux 安裝一直引導到桌面。你啟動了一個 gnome-terminal/konsole/whatever,這樣你就有了一個可以輸入命令的 tty。

現在假設我通過 SSH 連接到同一台機器。它會將我綁定到另一個 tty 以輸入命令。

現在假設我想將我的 tty 從我原來的 SSH 一個“切換”到之前開始的 gnome-terminal 一個。

基本上我在問是否有任何方法可以做同樣的事情screen -x但沒有螢幕?

我知道您可以通過將某些內容回顯到 /dev 文件中輕鬆地將輸出發送到另一個 tty,但我不知道如何“查看”tty 中的內容。

有任何想法嗎?

也許這些模式可以澄清情況。這是通常的設置:

                               Terminal  (/dev/ttyX or /dev/pts/x)
                                device
                                   |
                    (screen)<--[<output]----x-------(stdout) Process1
        Terminal  (keyboard)---[input >]---o-\----->(stdin)
                                            \ \
(hardware console or                         \ `----(stdout) Process2
 virtual console or terminal                  `---->(stdin)
 emulators like xterm, …)

並且沒有辦法Process3像這樣插入一些新的:

                             Terminal
                              device
                                 |
             (screen)<---o---[<output]--x------(stdout) Process1
  Terminal (keyboard)---/-x--[input >]-o-\---->(stdin)
                       | /              \ \
                       | |               \ `---(stdout) Process2
                       | |                `--->(stdin)
                       | |
                       \ `---------------------(stdout) Process3
                        `--------------------->(stdin)

screen(和其他人)所做的是分配一些偽終端設備(如 xterm 所做的)並將其重定向到一個或多個“真實”終端(物理、虛擬或模擬):

             Terminal                   pseudo
             devices              ,--> Terminal (/dev/pts/x)
                |         _______/      device
Terminal <--[<output]--- |       |        |
 1       ---[input >]--> |screen | <--[<output]---x-----(stdout) Process1
                         |Process| ---[input >]--o-\--->(stdin)
Terminal <--[<output]--- |       |                \ \
 2       ---[input >]--> |_______|                 \ `--(stdout) Process2
                                                    `-->(stdin)

使用screen -x您可以將另一個終端 xterm 或其他任何(例如Terminal 3)附加到螢幕會話。

所以不,您不能直接通過標準輸入/標準輸出與連接到不同終端的程序進行通信。如果它恰好是一個偽終端,並且如果這個過程被設想這樣做(就像螢幕一樣),你只能通過控制這個終端的過程來做到這一點。

引用自:https://unix.stackexchange.com/questions/17838