linux – tty,,pts,ptmx,ttyS,vcs,vcsa設備文件之間的區別?
終端有字符終端和圖形終端兩種模式。在linux的圖形環境下,我們可以通過鼠標點擊來完成所有的管理任務,這是圖形界面終端,另外一種就是文本界面的終端,
在這個界面的終端下我們可以使用linux命令來控制系統完成響應的工作,而這個文本終端也是服務器常用的模式
圖形終端
字符終端(text login)
終端是一種字char devices,它有多種類型,通常使用tty來簡稱各種類型的終端設備
物理終端:系統啟動之前的控制台叫物理終端
虛擬終端(VT):由軟件虛擬出來的,系統啟動之后由程序啟動的終端,例如由agetty(unix 稱為getty)程序啟動的6個tty叫虛擬終端
[root@ht5 src]# file /sbin/agetty /sbin/agetty: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically ....
模擬終端:遠程登錄或圖形界面(startx)或pts
物理終端 /dev/console 注意是串口終端對應ttyS0等
虛擬終端 /dev/tty(0,6) -》login程序 用戶名/密碼
模擬終端 /dev/pts/# -》sshd程序 用戶名/密碼
console和terminal有什么區別?
簡單來看,console就是計算機的原生的設備,比如參看 https://en.wikipedia.org/wiki/RS-232
[root@ht8 pts]# ll /dev | grep con crw------- 1 root root 5, 1 Jan 5 19:39 console [root@ht8 pts]# cat /proc/devices | grep console Character devices: 5 /dev/console
所謂的terminal是附加的設備,通過串口或事其他設備連接。也就是說console(原生設備)只有一個,但是terminal(附加設備)可以有多個
linux中的TTY是什么? TTY,是teletypewriter的縮寫,翻譯過來就是電傳打字機
說到Linux,TTY是UNIX和Linux中的抽象設備。有時它指的是物理輸入設備,如串行端口,有時它指的是允許用戶與系統交互的虛擬TTY。
TTY是Linux和Unix中的一個子系統,通過TTY驅動程序在內核級別實現流程管理、編輯和會話管理。
實際上,每當啟動終端模擬器或使用系統中的任何類型的shell時,它都會與被稱為偽TTY或PTY的虛擬TTY進行交互。
您只需在終端模擬器中鍵入TTY即可找到關聯的PTY.
在Linux系統的設備特殊文件目錄/dev/下,終端設備文件有以下幾種:
1)/dev/tty(控制終端)
tty是所有終端的統稱,包括串口、控制台終端以及偽終端設備。
通過tty命令可以知道當前具體是什么終端(所以tty也代表當前的終端,echo hello > /dev/tty都會顯示在當前的終端中,可能是上面的任意一種終端)。
[root@ht8 /]# tty /dev/pts/0 [root@ht8 fd]# who am i root pts/0 .... [root@ht8 fd]# ls -l `tty` | awk '{print $10}' /dev/pts/0 [root@ht8 fd]# ps ax|grep $$ 72311 pts/0 Ss 0:00 -bash
dev/tty就是映射到dev/tty1-6之間的一個(取決於你當前的控制台號),當然你可以有更多, 如果你現在是在圖形界面(Xwindows),通過鍵盤快捷鍵 Ctrl+Alt+F1~6進行切換到不同的終端上
比如你可以輸入命令 tt命令y 那么將顯示當前映射終端如:/dev/tty1或者/dev/pts/0等。
目前我登錄了2個終端
[root@ht8 src]# w 16:07:59 up 80 days, 19:29, 2 users, load average: 0.59, 0.73, 0.72 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.129.55.19 Sat10 7.00s 0.54s 0.00s w root pts/1 10.129.55.19 Sat20 16:18m 0.03s 0.03s -bash
//查看誰登錄了該系統,同時可以殺死其他終端,從而把對方踢出去.
[root@ht8 src]# tty
/dev/pts/0
##/dev/tty是當前進程的控制終端的設備文件,可以使用命令”ps -ax”來查看進程與哪個控制終端相連。
[root@ht8 src]# ps -ef | grep tty
root 843 1 0 Jan05 tty1 00:00:00 /sbin/agetty --noclear tty1 linux
root 43237 37454 0 16:08 pts/0 00:00:00 grep --color=auto tty
##sbin/agetty就是用於啟動一個tty終端的實例,顯示登錄頁面,agetty管理着虛擬控制台(tty1等)
//發送一個字符到另一個登錄的終端(加入多個人登錄了終端,就可以發給對方消息)
[root@ht8 ~]# echo "test,hello">/dev/pts/0
//從另外一個終端就是可以看到
[root@ht8 src]# test,hello
[root@ht8 src]# dmesg |grep tty
[ 0.000000] console [tty0] enabled // 看到這個啟用.
pts--->對應多個tty
[root@ht8 pts]# pwd
/dev/pts
[root@ht8 pts]# ll
total 0
crw--w---- 1 root tty 136, 0 Mar 27 2022 0
crw--w---- 1 root tty 136, 1 Mar 27 16:38 1
crw--w---- 1 root tty 136, 2 Mar 27 17:24 2
c--------- 1 root root 5, 2 Jan 5 19:39 ptmx
在不同終端輸出的數字就是tty終端號
[root@ht8 ~]# tty
/dev/pts/1
添加一個設備到/dev下則可以
[root@ht8 dev]# mknod /dev/tty100 c 4 100
//語法 建立一個名為tty100的設備文件,c表示是字符文件,major(主設備號)=4, minor(次設備號)=100 [root@ht8 dev]# ll /dev/ | grep tty100 crw-r--r-- 1 root root 4, 100 Mar 27 20:49 tty100 //再次執行則會出現...... [root@ht8 dev]# mknod /dev/tty100 c 4 100 mknod: ‘/dev/tty100’: File exists
打開 /etc/systemd/logind.conf
文件並將 NAutoVTs=3 設置為你想要在啟動時得到的虛擬控制台數量
[root@ht8 src]# cat /etc/systemd/logind.conf # This file is part of systemd. # Entries in this file show the compile time defaults. # You can change settings by editing this file. # Defaults can be restored by simply deleting this file. # See logind.conf(5) for details. [Login] NAutoVTs=3 #ReserveVT=6
....
2)/dev/ttySn(串行端口終端)
計算機把每個串行端口都看作是一個字符設備,若要向一個端口發送數據,可以在命令行上把標准輸出重定向到這些特殊文件名上即可。
例如,在命令行提示符下鍵入:echo test > /dev/ttyS1會把單詞”test”發送到連接在ttyS1(COM2)端口的設備上。這些都是串口,不是並口.
注意:當今的計算機都配有鍵盤和顯示設備,不再帶有多個文本終端。於是“系統控制台”就由本地鍵盤和監視器擔任。而當計算機主機沒有連接顯示硬件設備時,
一般就由串口設備 擔任“系統控制台”。把串口設備的電纜插入就可以得到診斷信息和登陸提示字
串行端口終端(Serial Port Terminal)是使用計算機串行端口連接的終端設備。linux把每個串行端口都看作是一個字符設備。有段時間這些串行端口設備通常被稱為終端設備,因為那時它的最大用途就是用來連接終端。這些串行端口所對應的設備名稱是/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,設備號分別是(4,0), (4,1)等,分別對應於DOS系統下的COM1、COM2等。若要向一個端口發送數據,可以在命令行上把標准輸出重定向到這些特殊文件名上即可。例如,在命令行提示符下鍵入:echo test > /dev/ttyS1會把單詞”test”發送到連接在ttyS1(COM2)端口的設備上。可接串口來實驗。
[root@ht8 pts]# ls -l /dev/ttyS* crw-rw---- 1 root dialout 4, 64 Jan 5 19:39 /dev/ttyS0 crw-rw---- 1 root dialout 4, 65 Jan 5 19:39 /dev/ttyS1 crw-rw---- 1 root dialout 4, 66 Jan 5 19:39 /dev/ttyS2 crw-rw---- 1 root dialout 4, 67 Jan 5 19:39 /dev/ttyS3
3)dev/pts/n(虛擬終端)或者叫偽終端
在XWindows模式下的偽終端,另外遠程登陸的用戶,就是使用telnet、ssh等遠程登陸的用戶,他的終端顯示就是pts/n。
/dev/pts是遠程登錄(telnet,ssh等)后創建的控制台設備文件所在的目錄
pts是遠程虛擬終端。devpts是一個虛擬的文件系統,一般安裝在/dev/pts。為了得到一個虛擬終端,進程打開/dev/ptmx,然后就可使用虛擬終端pts。
/dev/ptmx是master,其他的pts是slave,也就是一對多的關系.
pts與ptmx配合實現/dev/pty虛擬終端
目前登錄2個終端 [root@ht8 pts]# ll total 0 crw--w---- 1 root tty 136, 0 Mar 27 17:23 0 crw--w---- 1 root tty 136, 1 Mar 27 16:38 1 c--------- 1 root root 5, 2 Jan 5 19:39 ptmx //繼續登錄終端 [root@ht8 pts]# pwd /dev/pts [root@ht8 pts]# ll total 0 crw--w---- 1 root tty 136, 0 Mar 27 2022 0 crw--w---- 1 root tty 136, 1 Mar 27 16:38 1 crw--w---- 1 root tty 136, 2 Mar 27 17:24 2 //新增加的終端 c--------- 1 root root 5, 2 Jan 5 19:39 ptmx
//主從關系
[root@ht8 dev]# ls /dev/pt* /dev/ptmx /dev/pts0 /dev/pts: 0 1 2 ptmx
[root@ht8 pts]# w
17:26:44 up 80 days, 20:48, 3 users, load average: 0.77, 0.65, 0.69
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.129.55.19 Sat10 4.00s 0.64s 0.00s w
root pts/1 10.129.55.19 Sat20 48:04 0.04s 0.04s -bash
root pts/2 10.129.55.19 17:24 2:35 0.02s 0.02s -bash
/dev/pts ( pseudo terminal slave) 副虛擬終端,其目錄的文件都是由ptmx(主虛擬終端)產生的,它們是父子關系
當一個用戶以ssh登錄之后,該用戶就分到一個ptmx所賦予的pts資源(pts/3),所以說ssh使用的是虛擬終端,不是真正的tty接口。telnet用的則是真正的tty接口。
[root@ht8 tmp]# ps -ef | grep pts //3個終端
root 37445 1377 0 Mar26 ? 00:00:00 sshd: root@pts/0
root 37454 37445 0 Mar26 pts/0 00:00:00 -bash
root 127715 1377 0 Mar26 ? 00:00:00 sshd: root@pts/1
root 127736 127715 0 Mar26 pts/1 00:00:00 -bash
root 53767 1377 0 17:24 ? 00:00:00 sshd: root@pts/2
root 53776 53767 0 17:24 pts/2 00:00:00 -bash
devpts文件系統
[root@ht8 dev]# df -ha |grep devpts devpts 0 0 0 - /dev/pts [root@ht8 dev]# mount|column -t | grep devpts devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) //系統支持的文件 [root@ht8 ~]# cat /proc/filesystems nodev sysfs nodev rootfs nodev ramfs nodev bdev nodev proc nodev cgroup nodev cpuset nodev tmpfs nodev devtmpfs nodev debugfs nodev securityfs nodev sockfs nodev dax nodev bpf nodev pipefs nodev configfs nodev devpts nodev hugetlbfs nodev autofs nodev pstore nodev mqueue xfs nodev rpc_pipefs nodev nfs nodev nfs4 nodev binfmt_misc devpts 文件系統加載在 /dev/pts ,命令如下: mount devpts /dev/pts -t devpts
我們可以使用MAKEDEV來維護這個下面的設備文件, MAKEDEV是 一個 腳本程序, 用於 在 /dev 目錄下 建立 設備, 通過 這些 設備文件可以 訪問 位於 內核 的 驅動程序. 注意, 如果 應用程序 顯示 出錯信息 ``ENOENT: No such file or directory'', 一般指 設備文件 不存在, 而 `ENODEV: No such device'則 表明 內核 沒有配置 或 裝載 相應的 驅動程序.
5) 偽終端(/dev/pty)
這個是終端的發展,為滿足現在需求(比如telnet、xwindow窗口的管理)。偽終端(Pseudo Terminal)是成對的邏輯終端設備, 例如/dev/ptyp3和/dev/ttyp3(或着在設備文件系統中分別是/dev/pty/m3和/dev/pty/s3)。 偽終端用於創建登陸會話或提供其它功能,比如通過 TTY line discipline (包括SLIP或者PPP功能)來處理任意的數據生成。每一個 PTY 都有一個master端和一個slave端。
按照 System V/Unix98 的 PTY 命名方案,所有master端共享同一個 /dev/ptmx 設備節點(打開它內核將自動給出一個未分配的PTY),
所有slave端都位於 /dev/pts 目錄下,名為 /dev/pts/# (內核會根據需要自動生成和刪除它們)。 它們與實際物理設備並不直接相關。如果一個程序把ttyp3看作是一個串 行端口設備,則它對該端口的讀/寫操作會反映在該邏輯終端設備對的另一個上面(ttyp3)。 而ttyp3則是 另一個程序用於讀寫操作的邏輯設備。這樣,兩個程序就可以通過這種邏輯設備進行互相交流,而其中 一個使用ttyp3的程序則認為自己正在與一個串行端口進行通信。這很象是邏輯設備對之間的管道操作。 對於ttyp3(s3),任何設計成使用一個串行端口設備的程序都可以使用該邏輯設備。但對於使用ptyp3的 程序,則需要專門設計來使用ptyp3(m3)邏輯設備。 例如,如果某人在網上使用telnet程序連接到你的計算機上,則telnet程序就可能會開始連接到設 備ptyp2(m2)上(一個偽終端端口上)。此時一個getty程序就應該運行在對應的ttyp2(s2)端口上。當telnet從 遠端獲取了一個字符時,該字符就會通過m2、s2傳遞給getty程序,而getty程序就會通過s2、m2和telnet程序 往網絡上返回”login:”字符串信息。這樣,登錄程序與telnet程序就通過“偽終端”進行通信。通過使用適當的 軟件,就可以把兩個甚至多個偽終端設備連接到同一個物理串行端口上。 在使用設備文件系統(device filesystem)之前,為了得到大量的偽終端設備特殊文件,HP-UX AIX等使用了 比較復雜的文件名命名方式
6)/dev/console
是系統控制終端,系統的錯誤信息什么的都輸出到這里,console是一個緩沖的概念,其實是為內核提供打印的。
我們的pc,終端常用的是顯示器和鍵盤構成,我們用戶打印和內核打印都從這個終端反映給用戶。所以,這里,/dev/console是連接到/dev/tty0的,
其實這里有2個概念,console和tty這2個咚咚,怎么實現,其實console這個結構中有個device,這里其實就是tty0對應的一個虛擬終端設備。
如果,我們來個專門打印內核的設備(比如通過串口),我們把那個串口register_console,那么/dev/console就到這個串口設備了。
這時,內核打印就到這個串口設備了,而用戶的打印還是和上面的/dev/tty相關,如果/dev/tty對應/dev/tty0,那么用戶打印還在窗口中出現。
所以說/dev/console是用來外接控制台的。
然后在#dev/pts/0終端中輸入echo"test">/dev/pts/0 結果另一個終端上回顯示test。
然后你在#dev/pts/0終端中輸入echo"test">/dev/tty, 你會發現在當前窗口也顯示test字符串。也就是說dev/tty其實就是當前設備文件的一個鏈接。
關於/dev/console 應該來說更像一個緩沖結果吧,來實現對內核的打印,比如說內核把要打印的內容裝入緩沖區,
然后由console來決定打印到哪里吧(比如是tty0還是串口等等吧)。
所以說/dev/console是用來外接控制台的。
[root@ht8 src]# dmesg | grep tty* [ 0.000000] Found optimal setting for mtrr clean up [ 0.000000] Setting APIC routing to physical flat. [ 0.000000] console [tty0] enabled [ 0.137047] MDS: Vulnerable: Clear CPU buffers attempted, no microcode [ 0.193221] NMI watchdog: Shutting down hard lockup detector on all cpus [ 0.984859] pciehp 0000:00:15.0:pcie004: Slot #160 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.984928] pciehp 0000:00:15.1:pcie004: Slot #161 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.984989] pciehp 0000:00:15.2:pcie004: Slot #162 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985049] pciehp 0000:00:15.3:pcie004: Slot #163 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985109] pciehp 0000:00:15.4:pcie004: Slot #164 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985169] pciehp 0000:00:15.5:pcie004: Slot #165 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985229] pciehp 0000:00:15.6:pcie004: Slot #166 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985291] pciehp 0000:00:15.7:pcie004: Slot #167 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985353] pciehp 0000:00:16.0:pcie004: Slot #192 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985413] pciehp 0000:00:16.1:pcie004: Slot #193 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985475] pciehp 0000:00:16.2:pcie004: Slot #194 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985535] pciehp 0000:00:16.3:pcie004: Slot #195 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985595] pciehp 0000:00:16.4:pcie004: Slot #196 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985660] pciehp 0000:00:16.5:pcie004: Slot #197 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985723] pciehp 0000:00:16.6:pcie004: Slot #198 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985785] pciehp 0000:00:16.7:pcie004: Slot #199 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985846] pciehp 0000:00:17.0:pcie004: Slot #224 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985906] pciehp 0000:00:17.1:pcie004: Slot #225 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.985966] pciehp 0000:00:17.2:pcie004: Slot #226 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.986026] pciehp 0000:00:17.3:pcie004: Slot #227 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.986087] pciehp 0000:00:17.4:pcie004: Slot #228 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.986148] pciehp 0000:00:17.5:pcie004: Slot #229 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.986210] pciehp 0000:00:17.6:pcie004: Slot #230 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.986269] pciehp 0000:00:17.7:pcie004: Slot #231 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.986329] pciehp 0000:00:18.0:pcie004: Slot #256 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.986390] pciehp 0000:00:18.1:pcie004: Slot #257 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.986450] pciehp 0000:00:18.2:pcie004: Slot #258 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.986509] pciehp 0000:00:18.3:pcie004: Slot #259 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.986569] pciehp 0000:00:18.4:pcie004: Slot #260 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.986633] pciehp 0000:00:18.5:pcie004: Slot #261 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.986699] pciehp 0000:00:18.6:pcie004: Slot #262 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.986759] pciehp 0000:00:18.7:pcie004: Slot #263 AttnBtn+ PwrCtrl+ MRL- AttnInd- PwrInd- HotPlug+ Surprise- Interlock- NoCompl+ LLActRep+ [ 0.987368] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0 [ 0.987372] ACPI: Power Button [PWRF] [ 1.001646] rtc_cmos 00:01: setting system clock to 2022-01-05 11:39:26 UTC (1641382766) [ 1.361181] mptsas: ioc0: attaching ssp device: fw_channel 0, fw_id 0, phy 0, sas_addr 0x5000c29f91edda54 [ 1.372502] sd 2:0:0:0: [sda] Attached SCSI disk [ 1.483848] sd 0:0:1:0: [sdb] Attached SCSI disk [ 1.505423] sr 0:0:0:0: Attached scsi CD-ROM sr0 [ 1.988570] SGI XFS with ACLs, security attributes, no debug enabled [ 12.918105] sd 2:0:0:0: Attached scsi generic sg0 type 0 [ 12.918163] sr 0:0:0:0: Attached scsi generic sg1 type 5 [ 12.918218] sd 0:0:1:0: Attached scsi generic sg2 type 0
設備標識會在/proc/devices下
[root@ht8 src]# cat /proc/devices Character devices: 4 /dev/vc/0 4 tty 4 ttyS 5 /dev/tty 5 /dev/console 7 vcs 9 st 136 pts 252 rtc 253 dax ...
//我們在看下/dev下的有關tty,ttyS
[root@ht8 src]# ll /dev/ total 4 drwxr-xr-x 2 root root 3040 Mar 24 18:17 char lrwxrwxrwx 1 root root 15 Jan 5 19:39 stderr -> /proc/self/fd/2 lrwxrwxrwx 1 root root 15 Jan 5 19:39 stdin -> /proc/self/fd/0 lrwxrwxrwx 1 root root 15 Jan 5 19:39 stdout -> /proc/self/fd/1
crw-rw-rw- 1 root tty 5, 0 Jan 5 19:39 tty crw--w---- 1 root tty 4, 0 Jan 5 19:39 tty0 crw--w---- 1 root tty 4, 1 Mar 26 20:59 tty1 crw--w---- 1 root tty 4, 10 Jan 5 19:39 tty10 ...
crw-rw---- 1 root dialout 4, 64 Jan 5 19:39 ttyS0 crw-rw---- 1 root dialout 4, 65 Jan 5 19:39 ttyS1 crw-rw---- 1 root dialout 4, 66 Jan 5 19:39 ttyS2 crw-rw---- 1 root dialout 4, 67 Jan 5 19:39 ttyS3 crw-rw---- 1 root tty 7, 0 Jan 5 19:39 vcs crw-rw---- 1 root tty 7, 1 Jan 5 19:39 vcs1 crw-rw---- 1 root tty 7, 2 Jan 5 19:39 vcs2 crw-rw---- 1 root tty 7, 3 Jan 5 19:39 vcs3 crw-rw---- 1 root tty 7, 4 Jan 5 19:39 vcs4 ...
//圖形的VCS(“虛控制台屏幕”)VCSA的裝置和(“具有屬性虛擬控制台屏幕”)
例如/dev/vcs1
和/dev/vcsa1
。的虛擬控制台可以在文件中被配置/etc/inittab
讀取由INIT -通常它啟動幾個虛擬控制台的文本模式登錄過程getty。