天天看點

Linux中終端和控制台的一些不成熟的了解

首先聲明,這僅僅是在下一些不成熟的想法。是通過看網上的一些資料和自己實踐的一些心得,應該都是些很不成熟甚至是不太正确的想法。但是我還是想記錄下來,算是一個心路曆程吧。等以後成熟了,再來修改。

首先說一下控制台和終端在曆史上的一些差別。

要明白這兩者的關系,還得從以前的多人使用的計算機開始。大家都知道,最初的計算機由于價格昂貴,是以,一台計算機一般是由多個人同時使用的。在這種情況下一台計算機需要連接配接上許多套鍵盤和顯示器來供多個人 使用。在以前專門有這種可以連上一台電腦的裝置,隻有顯示器和鍵盤,還有簡單的處理電路,本身不具有處理計算機資訊的能力,他是負責連接配接到一台正常的計算 機上(通常是通過序列槽) ,然後登陸計算機,并對該計算機進行操作。當然,那時候的計算機作業系統都是多任務多使用者的作業系統。這樣一台隻有顯示器和鍵盤能夠通過序列槽連接配接到計算機 的裝置就叫做終端。   而控制台又是什麼回事呢? 學機電的人應該知道,一台機床,或者數控裝置的控制箱,通常會被稱為控制台,顧名思義,控制台就是一個直接控制裝置的台面(一個面闆,上面有很多控制按 鈕)。 在計算機裡,把那套直接連接配接在電腦上的鍵盤和顯示器就叫做控制台。請注意它和終端的差別,終端是通過序列槽連接配接上的,不是計算機本身就有的裝置,而控制台是 計算機本身就有的裝置,一個計算機隻有一個控制台。計算機啟動的時候,所有的資訊都會顯示到控制台上,而不會顯示到終端上。也就是說,控制台是計算機的基本裝置,而終端是附加裝置。 當然,由于控制台也有終端一樣的功能,控制台有時候也被模糊的統稱為終端。 計算機作業系統中,與終端不相關的資訊,比如核心消息,背景服務消息,都可以顯示到控制台上,但不會顯示到終端上。

現在由于計算機硬體越來越便宜,通常都是一個人獨占一台計算機超做,不再連接配接以前那種真正意義上的“終端裝置了”,是以,終端和控制台的概念也慢慢演化了。終端和控制台由硬體的概念,演化成了軟體的概念。現在我們提到終端大多都是虛拟終端,在我的CentOS7中一共有6個虛拟控制台終端,分别對應裝置檔案/dev/tty1----/dev/tty6(控制台“Alt”+“Fx”能夠切換到第x個(字元啞)終端。如果需要從X-Window裡跳到第(字元啞)終端,需要“Ctrl”+“Alt”+“Fx”),其中/dev/tty1是圖形控制台,其他的都是指令行控制台。還有一個裝置檔案/dev/tty0表示目前控制台,也就是目前你在使用哪個控制台,tty0就表示那個控制台。還有一個裝置檔案/dev/console好像是和tty0關聯在一起的,貌似也可以表示目前控制台。

下面是一個簡單的實驗:首先我位于圖形界面的控制台,然後按下Ctrl+alt+F2這個時候就進入了/dev/tty2所關聯的控制台終端。如圖:

Linux中終端和控制台的一些不成熟的了解

然後我們登入使用者。

Linux中終端和控制台的一些不成熟的了解

這個時候我們可以用tty指令檢視一下目前終端名稱

Linux中終端和控制台的一些不成熟的了解

發現确實是/dev/tty2

 我們像/dev/tty0寫入一句話:(需要root權限)

Linux中終端和控制台的一些不成熟的了解

 我們發現在這個控制台終端中顯示了我們寫入的話,這是應為/dev/tty0就表示目前控制台終端。

我們向/dev/console中寫入,同樣也會在目前控制台終端中顯示。

Linux中終端和控制台的一些不成熟的了解

貌似就是應為/dec/console和/dev/tty0是關聯的。

下面我們打開一個新的字元控制台終端,alt+F3,然後試着在/dev/tty2所關聯的控制台終端中,像tty2檔案中寫入一句話,看産生什麼效果:

tty2所表示的終端中。

Linux中終端和控制台的一些不成熟的了解

這是我們切換到tty3所表示的控制台終端中,發現已經輸出了hello,world

Linux中終端和控制台的一些不成熟的了解

上面這些就是控制台終端。。。。。。

在圖形界面的控制台終端中,還提供了無數個虛拟終端(就是我們可以用右鍵-》在終端中打開,彈出的那個可以輸入字元,顯示輸出的視窗。),這些虛拟終端對應的裝置檔案在/dev/pts/中

我們可以右鍵-》在終端中打開,來打開一個虛拟終端,然後執行tty指令,看看終端裝置的名稱

Linux中終端和控制台的一些不成熟的了解

發現叫/dev/pts/0。

然後我們再用同樣的方法打開一個終端

Linux中終端和控制台的一些不成熟的了解

沒錯這次叫/dev/pts/1了,以此類推,依次打開的就是/dev/pts/2....

我們試着在/dev/pts/0中向/dev/pts/1中寫入一句話:

Linux中終端和控制台的一些不成熟的了解

 我們會發現在第二個打開的終端視窗中,顯示了我們輸入的話。

我們也可以試着在第一個打開的終端視窗(/dev/pts/0)中,向/dev/tty2寫入一句話:

Linux中終端和控制台的一些不成熟的了解

然後我們切換到該控制台,發現我們輸入的話已經在這個控制台終端輸出了。

Linux中終端和控制台的一些不成熟的了解

最後介紹一下裝置檔案/dev/tty,這個檔案在程式中經常使用。由于程式可能運作在不同的終端中,但是程式沒有必要知道究竟在哪一個終端中運作。如果程式需要與終端打交道,那就和/dev/tty打交道吧!因為這個檔案始終關聯目前終端。!!

就寫到這裡了,都是些不成熟,甚至也可能是不争取的想法,希望對你有幫助。不對的地方還請指教,謝謝~~

參考了:http://blog.csdn.net/boldeagle/article/details/2610671

    http://www.cnblogs.com/wi100sh/p/4513245.html

繼續閱讀