unix是一個多用戶多任務的作業系統。早期電腦昂貴,所以當時使用便宜的設備連接到電腦上(當時還沒有鍵盤和顯示器,使用紙帶和卡片來輸入輸出)來使用操作系統,這個便宜的設備就是終端,也可以認為終端是一種控制台。所以可以認為電腦本身是console終端,便宜的連接設備是實體終端pty。
Linux是類別unix系統,所以也繼承了終端機的特性。但後來電腦逐漸便宜,也出現了顯示器和鍵盤,所以可以使用鍵盤當作輸入終端,顯示器當作輸出終端,這些終端就是虛擬終端,虛擬終端其實就是虛擬控制台,或者說是一個虛擬設備。
Linux提供了很多種虛擬終端,使用ttyN表示,使用Ctrl+Alt+F[1-6]可以進行虛擬終端的切換,這些終端設備記錄在/dev/目錄下。
[root@xuexi ~]# ls /dev/tty tty tty12 tty17 tty21 tty26 tty30 tty35 tty4 tty44 tty49 tty53 tty58 tty62 ttyS0 tty0 tty13 tty18 tty22 tty27 tty31 tty36 tty40 tty45 tty5 tty54 tty59 tty63 ttyS1 tty1 tty14 tty19 tty23 tty28 tty32 tty37 tty41 tty46 tty50 tty55 tty6 tty7 ttyS2 tty10 tty15 tty2 tty24 tty29 tty33 tty38 tty42 tty47 tty51 tty56 tty60 tty8 ttyS3 tty11 tty16 tty20 tty25 tty3 tty34 tty39 tty43 tty48 tty52 tty57 tty61 tty9
tty加上數值的就是虛擬終端,CTRL+ALT+F1表示切換到tty1終端,ctrl+alt+f2表示切換到tty2終端,一般Linux上只提供了ctrl+alt+f[1-6]這6個終端機之間切換的功能。兩個特殊的終端是tty和tty0,tty表示目前正在使用的終端,tty0表示目前已啟動的所有虛擬終端。還有ttySN,這些表示串行終端。
還有從ssh或telnet等從網路連接到電腦上的終端,或是從圖形虛擬終端開啟的命令列終端,都稱為偽終端,使用pts/N表示,對應的設備為/ dev/pts目錄下的數值N檔。
[root@xuexi ~]# ls /dev/pts/0 ptmx
0表示第一個偽終端,1表示第二個偽終端。
偽終端和其它所有終端的管理方式都不一樣,它是透過連接電腦的程式管理的,例如ssh連線則由ssh負責申請偽終端資源,並要求輸入使用者名稱和密碼。如果ssh連線進程被殺,則此偽終端也相應的退出。
另外,有些驗證的程式並非一定會為連線從程式指派終端,例如執行sudo ssh時,sudo就不一定會為ssh指派偽終端。
在現代Linux上,console終端已經和原始的意義不太一樣了,其裝置映射在/dev/console上,所有核心輸出的資訊都輸出到console終端,而其他使用者程式輸出的資訊則輸出到虛擬終端或偽終端。
總結下:
/dev/console:控制台終端
/dev/ttyN:虛擬終端,ctrl+alt+f[1-6]切換的就是虛擬終端
/dev/ttySN:串行終端
/dev/pts/N:偽終端,ssh等工具連接過去的活著圖形終端機下開啟的命令列終端就是偽終端。
以上是Linux終端類型的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!