Linux 黑話解釋:TTY 是什么?
談到 Linux 和 UNIX 時,你一定聽說過 “TTY” 這個術語,但是,這玩意是什么?
作為一個桌面用戶,它對你有用嗎?你需要它嗎?你能用它做什么?
在本文中,讓我向你介紹這些,幫助你熟悉 Linux 中的 TTY。
注意:這個問題沒有明確的答案,但它與過去的輸入/輸出設備的交互方式有關。因此,你必須了解一些歷史,才能清楚地了解情況。
“TTY” 背后的歷史
一切始于 19 世紀 30 年代的電傳打印機。
電傳打印機可以讓你通過電線發(fā)送或接受消息,它取代了摩爾斯電碼通信,那是一種需要兩個操作員才能有效地相互通信的方式。
一臺電傳打印機只需要一個操作員就可以輕松地傳遞消息。雖然它沒有現(xiàn)代布局的鍵盤,但它的系統(tǒng)后來由 Donald Murray 在 1901 年進行了改良,包括了一個類似打字機的鍵盤。
Murray 電碼減少了操作員發(fā)送消息的工作量。這才使得電傳打印機在 1908 年有了發(fā)展成為商業(yè)電傳打字機的可能。TTY 即是電傳打字機的縮寫。
二戰(zhàn)期間在倫敦實際使用的電傳打字機 | 圖片來源于維基百科
電傳打字機和普通打字機的區(qū)別在于,電傳打字機連接到通信設備,直接發(fā)送輸入的消息。
電傳打字機使人類在沒有計算機的情況下通過電線進行更快的通信成為可能。
從這時起,“TTY” 一詞就存在了。
(相對)現(xiàn)代的概念
現(xiàn)在,你一定想知道,它是如何進入現(xiàn)代計算機和 Linux 的?
最初是當電傳打字機進入了市場,幾年后半導體晶體管發(fā)展起來,然后演變成微處理器,為計算機的出現(xiàn)做好了準備。
最初的計算機沒有鍵盤的概念,打孔卡就是輸入的方法。
一種插入計算機而不是通過鍵盤(TTY)輸入的打孔卡計算機程序 | 圖片來源于維基百科
隨著計算機的發(fā)展,批量輸入的打孔卡最終被電傳打字機取代,成為一種方便的輸入/輸出設備。
1956 年的 LGP-30 計算機,附帶 TTY
隨著技術的進步,電傳打字機被電子技術“虛擬化”了。因此,你不需要一個物理的、機械的 TTY,而是一個虛擬的電子 TTY。
早期的計算機甚至沒有視頻屏幕。字符被打印在紙上而不是顯示在屏幕上。因此,你會看到“打印”這個術語而不是“顯示”。隨著技術的進步,視頻顯示后來被添加到終端中。
換句話說,你可能聽說過把它們稱為“視頻終端”?;蛘撸憧梢苑Q它們?yōu)?ldquo;物理”終端。
后來,它們演變成具有更強的能力和功能的軟件仿真的終端。
這就是所謂的“終端仿真器”,如 GNOME 終端或 Konsole,或者其他 你在 Linux 上找到的各種終端仿真器。
所以,Linux 中的 TTY 到底是什么?
在 Linux 或 UNIX 中,TTY 變?yōu)榱艘粋€抽象設備。有時它指的是一個物理輸入設備,例如串口,有時它指的是一個允許用戶和系統(tǒng)交互的虛擬 TTY(參考此處)。
TTY 是 Linux 或 UNIX 的一個子系統(tǒng),它通過 TTY 驅(qū)動程序在內(nèi)核級別實現(xiàn)進程管理、行編輯和會話管理。
在編程的場景下,你還需要深入研究。但是考慮到本文的范圍,這可能是一個容易理解的定義。
如果你好奇的話,你可以查看一個有點舊的資源(TTY 揭秘),它盡可能的澄清了 Linux 和 UNIX 系統(tǒng)中的 TTY 的各種技術細節(jié)。
事實上,每當你在系統(tǒng)中啟動一個終端仿真器或使用任何類型的 shell 時,它都會與虛擬 TTY(也被稱為偽 TTY,即 PTY)進行交互。
你可以在終端仿真器中輸入 tty
來找到相關聯(lián)的 PTY。
如何在 Linux 中訪問 TTY?
在 Linux 中很容易訪問 TTY。事實上,當我不知道它是什么時,我不小心打開了它,于是對要做什么、如何擺脫它感到恐慌。
在大多數(shù) 發(fā)行版 中,你可以使用以下鍵盤快捷鍵來得到 TTY 屏幕:
CTRL + ALT + F1
– 鎖屏CTRL + ALT + F2
– 桌面環(huán)境CTRL + ALT + F3
– TTY3CTRL + ALT + F4
– TTY4CTRL + ALT + F5
– TTY5CTRL + ALT + F6
– TTY6
你最多可以訪問六個 TTY。但是,前兩個快捷方式指向發(fā)行版的鎖定屏幕和桌面環(huán)境。
而其他快捷方式將會讓你進入一個命令行界面。
什么時候應該使用 TTY?
TTY 不僅是一個技術寶藏,即使像我這樣不是開發(fā)人員的用戶,它也很有用。
在圖形桌面環(huán)境凍結(jié)的情況下,它應該可以派上用場。在某些情況下,從 TTY 重建桌面環(huán)境能幫助解決程序問題。
或者,你也可以選擇在 TTY 中執(zhí)行任務,例如更新 Linux 系統(tǒng)等。在這些情況下,你不希望顯示問題中斷你的進程。
最壞的情況是,如果圖形用戶界面失去響應,你可以進入 TTY 并重新啟動計算機。
有些用戶還喜歡在 TTY 的幫助下傳輸大文件(我不是其中之一)。
Linux 中的 TTY 命令
當你在終端模擬器中輸入 tty
時,它將打印連接到標準輸入的終端文件名,就像手冊頁描述的一樣。
換句話說,要知道你連接的 TTY 編號,只需輸入 tty
。并且,如果有多個用戶遠程連接到 Linux 機器,你可以使用 who
命令來檢查其他用戶連接到的是哪個 TTY。