CentOS終端類型及相互轉換方式
Linux系統中的終端基本都在/dev目錄下,可分為文本命令列模式和圖形介面模式。Windows系統中的圖形介面是在系統核心空間中的,而Linux系統中的圖形介面是作為一個應用程式調用的,所以windows系統中的圖形介面是開機啟動的,而Linux系統中的圖形介面是可以開機不啟動的,因為它相當於是一個運行在Linux系統上的一個應用程式而已。
CentOS及RedHat中可通過修改/etc/inittab檔案中的id:3:initdefault來更改啟動項。如果id是3則啟動的是文本命令終端模式,將3改為5則會預設啟動圖形介面(即Xwindow)模式。inittab是不可執行檔文字檔,會在Linux完成核心引導後,被init初始化進程調用,是一個設定檔。檔案中id的格式為:id:run-level:action:process,各項之間用冒號隔開,其中某些部分可為空白,我的Centos6系統中的inittab檔案就只有其中的前面3項,process為空白。id標識符唯一,在設定檔中不能重複。run-level指定系統運行層級,通過vi /etc/inittab查看該檔案時可看到所示的解釋:
一共分為7個層級(0~6):
0-halt,即關機,所以在關機的時候也可通過init 0指令來執行,不過這是直接關機,不會提示,建議多使用者使用時不要這樣用。
1-單一使用者模式。單一使用者模式只有系統管理員進入,管理員可以在這個模式下處理在有登陸使用者情況下不能更改的檔案。編號1也可以用s代替。
2-不具備網路檔案系統功能的多使用者文本命令列模式。用的比較少。
3-具備網路檔案系統功能的多使用者文本命令列模式。是最常用的運行模式,也是多數伺服器的預設模式。
4-保留不用。
5-具備網路功能的Xwindow模式,初學者可將其設定為預設模式,系統初始化時直接進入圖形化介面,操作比較方便,適合初學者,但是對於常用Linux的使用者來說這並不是一個很好的選擇,還是應該使用3的模式。
6-關閉所有啟動並執行進程並重新啟動系統。
Action是執行啟動並執行動作,initdefault是系統啟動後進入的執行等級,該行不需要指定process。
如果模式啟動的是run-level為3的文本命令列模式,可以在登陸後指令startx命令切換到5的Xwindow模式,使用startx -- :1開啟第二個Xwindow。在Xwindow模式下可通過Ctrl+Alt+(F1~F6)再回到命令列模式。F1~F6表示6個控制台。startx只可以在沒有啟動過xwindow時使用,如果已經啟動過xwindow,然後回到命令列模式,這時如果還想回到已經啟動過的xwindow則不能使用startx,需要使用Ctrl+Alt+F7/F8,這代表兩個xwindow控制台。在命令列控制台間相互切換可通過Alt+Fn,例如從命令列控制台1切換到控制台5,則可執行Alt+F5。在真機下這些命令都可正常執行,但是如果是在VM虛擬機器中的Linux系統,則會出現問題,因為Ctrl+Alt已經被VM用作了快速鍵,所以會衝突。這時可通過Ctrl+Alt+Shift+Fn切換,如果這還不行,則可按住Ctrl+Alt,然後按下Space鍵,然後放開Space鍵,再按Fn鍵即可完成切換,我在我的VM虛擬機器的Centos6系統中實驗過,能正常切換。
Linux系統中,/dev/ttyn表示控制台終端,即上面所說的文本命令列終端,可通過Alt+Fn相互切換的。當在控制台登陸時,使用的是tty1,這時用who指令可查看到tty1已有使用者登陸:
此時再開啟一個文本控制台終端並登陸,就會有tty2被使用,依次類推,tty一般可支援6個,及tty1~tty6。tty0代表當前所使用的虛擬終端,系統所產生的資訊會發送到這個終端上,相當於是當前所使用終端的一個別名,例如如果當前正在使用tty3,則tty0代表tty3。只有root使用者能向/dev/tty0進行寫操作。例如可通過ech0 “test” > /dev/tty0向當前使用的終端發送test訊息,但是如果不是root使用者會提示permission denied。
上面的圖中還有3個pts終端,在我的機器上,pts/0和pts/2是兩個xwindow控制台,pts/1是通過SSH登入的Xshell終端。此時通過ls /dev/pts查看會出現以下資訊:
pts是pty的實現方法,與ptmx配合使用實現pty,而pty就是虛擬終端,即偽終端。Pty是成對的邏輯終端裝置,即master和slave裝置,對master的操作會反映在slave上。他們與實際物理裝置並不直接相關。如果一個程式把ptyp3(master裝置)看作是一個序列埠裝置,則它對該連接埠的讀/ 寫操作會反映在該邏輯終端裝置對應的另一個ttyp3(slave裝置)上面。而ttyp3則是另一個程式用於讀寫操作的邏輯裝置。
Linux下還有一個終端叫串口終端,即/dev/ttySn。這些終端是使用電腦序列埠串連的終端裝置,對應於DOS系統下的COM1~COMn。例如,執行echo test > /dev/ttyS1會把單詞test發送到串連在ttyS1連接埠的裝置上。
最後,可通過執行skill -9 xxx清除xxx控制台的所有進程。例如:skill -9 /dev/pts/0則會清除第一個xwindow控制台的所有進程。