1、tty1~tty6各終端之間沒有區(qū)別的,是為了方便用戶的登錄。
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比臺兒網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式臺兒網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋臺兒地區(qū)。費用合理售后完善,10年實體公司更值得信賴。
同時利用其同一用戶或其他用戶同時登錄,切換用戶的時候,只需要使用alt+ctrl+fn切換即可,方便管理。
2、當(dāng)tty1 登錄后,出現(xiàn)死機時,可切換到tty2(alt+ctrl+f2),利用另一個用戶登錄。
利用root用戶登錄,ps -aux | grep program_name查詢到剛才的那個讓系統(tǒng)死機的進(jìn)程,然后kill pid掉即可。
這時系統(tǒng)就會恢復(fù)正常,可通過service program_name start再次啟動這個進(jìn)程。
3、通過w命令,或who命令可以查看當(dāng)前登錄的用戶。
其中l(wèi)ine那個字段就表示用戶所使用的登錄終端,tty1表示虛擬控制臺,通過ALT+CTRL+FN。
pts/n,遠(yuǎn)程登錄的用戶,使用securecrt,putty等遠(yuǎn)程登錄工具登錄的用戶,終端顯示的就是pts/n,比如說pts/0,在本機上,的xwindow下,打開的那個終端,也顯示為pts/n。
4、可以更改ttyn虛擬控制臺virtual console的數(shù)量,在/etc/inittab文中
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
這6行,就表示可以啟動的tty了。
第一個字段(1-6)表示編號。
第二個字段,表示在那種運行級別啟動ttyn,其中2345就表示在runlevel為2345都啟動此ttyn。如果你只想在指定的運行級別啟動某個ttyn的話,可以修改這個字段的值,
比如,tty4只能在運行級別為35時(是runlevel 3 和runlevel 5),刪除24即可。
如果想啟動某個運行級別只需要注視掉對應(yīng)的行即可。要重新開啟時,刪除#即可。
擴展資料:
ubuntu終端命令:
sudo: Executing Commands with Elevated Privileges 執(zhí)行命令特權(quán) sudo是允許系統(tǒng)管理員讓普通用戶執(zhí)行一些或者全部的root命令的一個工具,如halt,reboot,su等等。
這樣不僅減少了root用戶的登陸 和管理時間,同樣也提高了安全性。Sudo不是對shell的一個代替,它是面向每個命令的。
參考資料來源:百度百科-ubuntu終端命令
參考資料來源:百度百科-linux
linuxtty未退出的解決方法如下:
退出Vi
當(dāng)編輯完文件,準(zhǔn)備退出Vi返回到shell時,可以使用以下幾種方法之一。
在命令模式中,連按兩次大寫字母Z,若當(dāng)前編輯的文件曾被修改過,則Vi保存該文件后退出,返回到shell;若當(dāng)前編輯的文件沒被修改過,則Vi直接退出, 返回到shell。
在末行模式下,輸入命令
:w
Vi保存當(dāng)前編輯文件,但并不退出,而是繼續(xù)等待用戶輸入命令。在使用w命令時,可以再給編輯文件起一個新的文件名。
:w! newfile
否則可選擇另外的文件名來保存當(dāng)前文件。
在末行模式下,輸入命令
:q
系統(tǒng)退出Vi返回到shell。若在用此命令退出Vi時,編輯文件沒有被保存,則Vi在顯示窗口的最末行顯示如下信息:
No write since last change (use ! to overrides)
提示用戶該文件被修改后沒有保存,然后Vi并不退出,繼續(xù)等待用戶命令。若用戶就是不想保存被修改后的文件而要強行退出Vi時,可使用命令
:q!
Vi放棄所作修改而直接退到shell下。
在末行模式下,輸入命令
:wq
Vi將先保存文件,然后退出Vi返回到shell。
在末行模式下,輸入命令
:x
該命令的功能同命令模式下的ZZ命令功能相同。
TTY設(shè)備包括虛擬控制臺,串口以及偽終端設(shè)備。
TTY是TeleTYpe的一個老縮寫。Teletypes,或者teletypewriters,原來指的是電傳打字機,是通過串行線用打印機鍵盤通過閱讀和發(fā)送信息的東西,和古老的電報機區(qū)別并不是很大。之后,當(dāng)計算機只能以批處理方式運行時(當(dāng)時穿孔卡片閱讀器是唯一一種使程序載入運行的方式),電傳打字機成為唯一能夠被使用的“實時”輸入/輸出設(shè)備。最終,電傳打字機被鍵盤和顯示器終端所取代,但在終端或TTY接插的地方,操作系統(tǒng)仍然需要一個程序來監(jiān)視串行端口。一個getty“Get TTY”的處理過程是:一個程序監(jiān)視物理的TTY/終端接口。
在Linux中,TTY也許是跟終端有關(guān)系的最為混亂的術(shù)語。TTY是TeleTYpe的一個老縮寫。Teletypes,或者teletypewriters,原來指的是電傳打字機,是通過串行線用打印機鍵盤通過閱讀和發(fā)送信息的東西,和古老的電報機區(qū)別并不是很大。之后,當(dāng)計算機只能以批處理方式運行時(當(dāng)時穿孔卡片閱讀器是唯一一種使程序載入運行的方式),電傳打字機成為唯一能夠被使用的“實時”輸入/輸出設(shè)備。最終,電傳打字機被鍵盤和顯示器終端所取代,但在終端或TTY接插的地方,操作系統(tǒng)仍然需要一個程序來監(jiān)視串行端口。一個getty“Get TTY”的處理過程是:一個程序監(jiān)視物理的TTY/終端接口。對一個虛擬網(wǎng)絡(luò)服務(wù)器(VNC)來說,一個偽裝的TTY(Pseudo-TTY,即假冒的TTY,也叫做“PTY”)是等價的終端。當(dāng)你運行一個xterm(終端仿真程序)或GNOME終端程序時,PTY對虛擬的用戶或者如xterm一樣的偽終端來說,就像是一個TTY在運行?!癙seudo”的意思是“duplicating in a fake way”(用偽造的方法復(fù)制),它相比“virtual”或“emulated”更能真實的說明問題。而在的計算中,它卻處于被放棄的階段。
tty也是一個Unix命令,用來給出當(dāng)前終端設(shè)備的名稱。
終端是一種字符型設(shè)備,它有多種類型,通常使用tty來簡稱各種類型的終端設(shè)備。
在Linux系統(tǒng)的設(shè)備特殊文件目錄/dev/下,終端特殊設(shè)備文件一般有以下幾種:
串行端口
串行端口終端(Serial Port Terminal)是使用計算機串行端口連接的終端設(shè)備。計算機把每個串行端口都看作是一個字符設(shè)備。有段時間這些串行端口設(shè)備通常被稱為終端設(shè)備,因為那時它的最大用途就是用來連接終端。這些串行端口所對應(yīng)的設(shè)備名稱是/dev/tts/0(或/dev/ttyS0),/dev/tts/1(或/dev/ttyS1)等,設(shè)備號分別是(4,0),(4,1)等,分別對應(yīng)于DOS系統(tǒng)下的COM1、COM2等。若要向一個端口發(fā)送數(shù)據(jù),可以在命令行上把標(biāo)準(zhǔn)輸出重定向到這些特殊文件名上即可。例如,在命令行提示符下鍵入:echo test /dev/ttyS1會把單詞”test”發(fā)送到連接在ttyS1(COM2)端口的設(shè)備上。
偽終端
偽終端(Pseudo Terminal)是成對的邏輯終端設(shè)備(即master和slave設(shè)備,對master的操作會反映到slave上)。
例如/dev/ptyp3和/dev/ttyp3(或者在設(shè)備文件系統(tǒng)中分別是/dev/pty /m3和 /dev/pty/s3)。它們與實際物理設(shè)備并不直接相關(guān)。如果一個程序把ptyp3(master設(shè)備)看作是一個串行端口設(shè)備,則它對該端口的讀/ 寫操作會反映在該邏輯終端設(shè)備對應(yīng)的另一個ttyp3(slave設(shè)備)上面。而ttyp3則是另一個程序用于讀寫操作的邏輯設(shè)備。telnet主機A就是通過“偽終端”與主機A的登錄程序進(jìn)行通信。
控制終端
如果當(dāng)前進(jìn)程有控制終端(Controlling Terminal)的話,那么/dev/tty就是當(dāng)前進(jìn)程的控制終端的設(shè)備特殊文件??梢允褂妹睢眕s –ax”來查看進(jìn)程與哪個控制終端相連。對于你登錄的shell,/dev/tty就是你使用的終端,設(shè)備號是(5,0)。使用命令”tty”可以查看它具體對應(yīng)哪個實際終端設(shè)備。/dev/tty有些類似于到實際所使用終端設(shè)備的一個聯(lián)接。
控制臺
在Linux 系統(tǒng)中,計算機顯示器通常被稱為控制臺終端(Console)。它仿真了類型為Linux的一種終端(TERM=Linux),并且有一些設(shè)備特殊文件與之相關(guān)聯(lián):tty0、tty1、tty2 等。當(dāng)你在控制臺上登錄時,使用的是tty1。使用Alt+[F1—F6]組合鍵時,我們就可以切換到tty2、tty3等上面去。tty1–tty6等稱為虛擬終端,而tty0則是當(dāng)前所使用虛擬終端的一個別名,系統(tǒng)所產(chǎn)生的信息會發(fā)送到該終端上(這時也叫控制臺終端)。因此不管當(dāng)前正在使用哪個虛擬終端,系統(tǒng)信息都會發(fā)送到控制臺終端上。/dev/console即控制臺,是與操作系統(tǒng)交互的設(shè)備,系統(tǒng)將一些信息直接輸出到控制臺上。只有在單用戶模式下,才允許用戶登錄控制臺。
虛擬終端
在Xwindow模式下的偽終端.如在Kubuntu下用konsole,就是用的虛擬終端,用tty命令可看到/dev/pts/name, name為當(dāng)前用戶名。
其它類型
Linux系統(tǒng)中還針對很多不同的字符設(shè)備存在有很多其它種類的終端設(shè)備特殊文件。例如針對ISDN設(shè)備的/dev/ttyIn終端設(shè)備等。
tty設(shè)備包括虛擬控制臺,串口以及偽終端設(shè)備。
/dev/tty代表當(dāng)前tty設(shè)備,在當(dāng)前的終端中輸入 echo “hello” /dev/tty ,都會直接顯示在當(dāng)前的終端中。
Text Telephones (TTY)
聾啞人電話,在手機插入專用設(shè)備后支持收發(fā)文本,需網(wǎng)絡(luò)支持,中國網(wǎng)絡(luò)不支持TTY.
除聾啞模式外,還支持只聽不說(HCO)和只說不聽(VCO)兩種模式。
ttyS0~ ttyS3 (串行端口終端)指的是電腦的各個物理接口(這些都是串口,不是并口),外部的終端通過這些物理接口與電腦連接 ,從而實現(xiàn)和電腦進(jìn)行交互。
?例如:dmesg |grep tty可以查看開啟的接口(串口)
? ? ?目前連接遠(yuǎn)程服務(wù)器或者直接在服務(wù)器上面操作等都是通過創(chuàng)建虛擬終端的形式。比如pts/1 和tty1虛擬終端,其中tty表示直接登錄機器生成的而pts表示遠(yuǎn)程連接生成的。其中遠(yuǎn)程連接是通過sshd服務(wù)進(jìn)行創(chuàng)建session會話和bash進(jìn)程(所以可以看到有sshd進(jìn)程,同時虛擬終端可以創(chuàng)建多個,這是依賴ptmx功能,sshd通過與ptmx通訊,ptmx在和相對應(yīng)的pts通訊從而達(dá)到多個虛擬終端的效果)。
? ? 例如:在centos系統(tǒng)中的圖像界面中打開的terminal就是一個pts但是整個圖形界面是一個tty,centos切換到命令行界面后 輸入tty命令時輸出就是tty1或ttyn了,這時候的命令行界面與圖形界面的運行級別是一樣的,通過命令行創(chuàng)建的所有進(jìn)程都是屬于tty1終端的。
? ? 注意: tty就是ttyS的虛擬版本,只是不需要通過外部線路進(jìn)行連接了。遠(yuǎn)程連接服務(wù)器需要sshd服務(wù),sshd和tty沒有聯(lián)系,遠(yuǎn)程連接是因為本地有終端模擬器,本機連接就需要內(nèi)核直接模擬一個模擬器了,所有遠(yuǎn)程是pts,本機是tty 。
?從上面的流程中可以看出來對用戶空間的程序來說它們沒有區(qū)別,都是一樣的;從內(nèi)核角度來看pts的另一端連接的是ptmx,而tty的另一端連接的是內(nèi)核的終端模擬器,ptmx和終端模擬器都只是負(fù)責(zé)維護(hù)會話和轉(zhuǎn)發(fā)數(shù)據(jù)包;再看看ptmx和內(nèi)核終端模擬器的另一端,ptmx的另一端連接的是用戶空間的應(yīng)用程序,如sshd、tmux等,而內(nèi)核終端模擬器的另一端連接的是具體的硬件,如鍵盤和顯示器。
SSH遠(yuǎn)程訪問---重點
這里的Terminal可能是任何地方的程序,比如windows上的putty,所以不討論客戶端的Terminal程序是怎么和鍵盤、顯示器交互的。由于Terminal要和ssh服務(wù)器打交道,所以肯定要實現(xiàn)ssh的客戶端功能。這里將建立連接和收發(fā)數(shù)據(jù)分兩條線路解釋,為了描述簡潔,這里以sshd代替ssh服務(wù)器程序:
建立連接:
1.Terminal請求和sshd建立連接。
2.如果驗證通過,sshd將創(chuàng)建一個新的session。
3.調(diào)用API(posix_openpt())請求ptmx創(chuàng)建一個pts,創(chuàng)建成功后,sshd將得到和ptmx關(guān)聯(lián)的fd,并將該fd和session關(guān)聯(lián)起來。
4.同時sshd創(chuàng)建shell進(jìn)程,將新創(chuàng)建的pts和shell綁定。
收發(fā)消息:
1.Terminal收到鍵盤的輸入,Terminal通過ssh協(xié)議將數(shù)據(jù)發(fā)往sshd。
2.sshd收到客戶端的數(shù)據(jù)后,根據(jù)它自己管理的session,找到該客戶端對應(yīng)的關(guān)聯(lián)到ptmx上的fd。
3.往找到的fd上寫入客戶端發(fā)過來的數(shù)據(jù)。
4.ptmx收到數(shù)據(jù)后,根據(jù)fd找到對應(yīng)的pts(該對應(yīng)關(guān)系由ptmx自動維護(hù)),將數(shù)據(jù)包轉(zhuǎn)發(fā)給對應(yīng)的pts。
5.pts收到數(shù)據(jù)包后,檢查綁定到自己上面的當(dāng)前前端進(jìn)程組,將數(shù)據(jù)包發(fā)給該進(jìn)程組的leader。
6.由于pts上只有shell,所以shell的read函數(shù)就收到了該數(shù)據(jù)包。
7.shell對收到的數(shù)據(jù)包進(jìn)行處理,然后輸出處理結(jié)果(也可能沒有輸出)。
8.shell通過write函數(shù)將結(jié)果寫入pts。
9.pts將結(jié)果轉(zhuǎn)發(fā)給ptmx。
10.ptmx根據(jù)pts找到對應(yīng)的fd,往該fd寫入結(jié)果。
11.sshd收到該fd的結(jié)果后,找到對應(yīng)的session,然后將結(jié)果發(fā)給對應(yīng)的客戶端。
SSH + Screen/Tmux
? 常用Linux的同學(xué)應(yīng)該對screen和tmux不陌生,通過它們啟動的進(jìn)程,就算網(wǎng)絡(luò)斷開了,也不會受到影響繼續(xù)執(zhí)行,下次連上去時還能看到進(jìn)程的所有輸出,還能繼續(xù)接著干活。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?這種情況要稍微復(fù)雜一點,不過原理都是一樣的,前半部分和普通ssh的方式是一樣的,只是pts/0關(guān)聯(lián)的前端進(jìn)程不是shell了,而是變成了tmux客戶端,所以ssh客戶端發(fā)過來的數(shù)據(jù)包都會被tmux客戶端收到,然后由tmux客戶端轉(zhuǎn)發(fā)給tmux服務(wù)器,而tmux服務(wù)器干的活和ssh的類似,也是維護(hù)一堆的session,為每個session創(chuàng)建一個pts,然后將tmux客戶端發(fā)過來的數(shù)據(jù)轉(zhuǎn)發(fā)給相應(yīng)的pts。由于tmux服務(wù)器只和tmux客戶端打交道,和sshd沒有關(guān)系,當(dāng)終端和sshd的連接斷開時,雖然pts/0會被關(guān)閉,和它相關(guān)的shell和tmux客戶端也將被kill掉,但不會影響tmux服務(wù)器,當(dāng)下次再用tmux客戶端連上tmux服務(wù)器時,看到的還是上次的內(nèi)容。