zoukankan      html  css  js  c++  java
  • 控制台、终端、虚拟终端和伪终端

    首先, 终端 (Terminal)概念通常是指那些与集中式主机系统(例如IBM大型计算机)相连的“哑”用户设备。 而个人计算机演变至今,让人很难理解这个概念。

    1、终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念。

    一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种.控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

    控制台上通过getty软件虚拟了六个字符哑终端(或者叫控制台终端tty1-tty6)(数量可以在/etc/inittab里自己调)和一个图型终端, 在虚拟图形终端中又可以通过软件(如rxvt)再虚拟无限多个虚拟字符哑终端(pts/0....)。

    所以在个人计算机上,只有一个实际的控制台,没有终端,所有终端都是在控制台上用软件模拟的。

    2、控制台 “Ctrl”+“Alt”+“Fx”

    Linux在控制台下提供了不止一个(字符哑)终端,支持多用户同时登录,包括在本机同时登录。控制台“Ctrl”+“Alt”+“Fx”能够切换到第x个(字符哑)终端。

    在图形界面下输入命令的那个叫伪终端,不在图形界面则是虚拟终端,用串口作终端则直接叫终端了。它们都有什么不同?

    远古时候存在各种串行设备,它们的物理接口与传输特性各自有异,而它们作为终端有一些代码可以抽象出来,于是形成了最早的tty层。

    3、控制终端(/dev/tty) 这是个在应用程序中的一个概念,前台进程有个控制终端,就对应这个。

    其实/dev/tty会映射到当前的设备(通过tty命令可以看到),如果在图形界面(Xwindows)输入#tty 发现dev/tty映射到/dev/pts/0的伪终端, 如果在控制台会看到映射到/dev/tty0。

    4、伪终端(/dev/pty/)这个是终端的发展,为满足现在需求(比如网络登陆、xwindow窗口的管理)。

    伪终端(Pseudo Terminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或着在设备文件系统中分 
    别是/dev/pty/m3和/dev/pty/s3)。它们与实际物理设备并不直接相关。

    5、控制台终端(/dev/ttyn, /dev/console) 在UNIX系统中,计算机显示器通常被称为控制台终端(Console)。

    它仿真了类型为Linux的一种终端(TERM=Linux),tty1 –tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名, 系统所产生的信息会发送到该终端上。

    console是一个缓冲的概念,其实是为内核提供打印的。我们的pc,终端常用的是显示器和键盘构成,我们用户打印和内核打印都从这个终端反映给用户。所以,这里,/dev/console是连接到/dev/tty0的,其实这里有2个概念,console和tty,怎么实现?其实console这个结构中有个device,这里其实就是tty0对应的一个虚拟终端设备。 如果,我们来个专门打印内核的设备(比如通过串口),我们把那个串口register_console,那么/dev/console就到这个串口设备了。这时,内核打印就到这个串口设备了,而用户的打印还是和上面的/dev/tty相关,如果/dev/tty对应/dev/tty0,那么用户打印还在窗口中出现。所以说/dev/console是用来外接控制台的。

    6、串行端口终端(/dev/ttySn)  (Serial Port Terminal)是使用计算机串行端口连接的终端设备。

    计算机把每个串行端口都看作是一个字符设备,/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0), (4,1)等,分别对应于DOS系统下的COM1、COM2等。例如,在命令行提示符下键入:#echo test > /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上,可接串口来实验。

    总结:

    首先:两种模式:字符模式:对应的为控制台,设备文件为/dev/tty1-6, 而/dev/tty0则是当前终端设备文件的别名。

         关于dev/tty其实很简单:就是当前终端设备的一个链接(有点像/dev/tty0),测试如下

          

    Xwindow下打开多个终端(输入命令的窗口):#tty命令,发现在各个窗口分别显示为# dev/pts/0  #dev/pts/1  #dev/pts/2....

    然后在#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是用来外接控制台的。

    Putty vim 如果没有高亮语法,查看 echo $TERM 是否?

    .vimrc 中 syntax on

    如果此时语法还是没有高亮显示,那么在profile文件或其他配置文件中添加以下语句:
    export TERM=xterm-color

    putty vim 鼠标选择后不能复制粘贴,因为此时进入的visual模式, 在.vimrc中加入 

     if exists("&mouse")

      set mouse=v

     " set mouse=a       ""此时要复制需先按住shift
    endif

    Putty在SSH 里面勾选X11 forwarding选项,下面的X display location 只需要填写 localhost, 不用填写具体的端口号,

    可能导致有些图形界面不能正常显示!

     Linux中的控制台界面,要大量用到Termios库的内容,

    termios,tcgetattr,tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow, cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed - 获取和设置终端属性,行控制,获取和设置波特率

    stty命令用于显示和修改终端行设置(change and print terminal line settings)。

    常用参数

    stty命令不带参数可以打印终端行设置,加上-a参数可以打印得更详细些。

    stty size可以显示终端的大小,即行数和列数。

    stty命令还可以更改终端行的设置,格式如下:

    stty SETTING CHAR

    其中,SETTING可以是如下

        eof : 输入结束,文件结束,默认为Ctrl+D。比如:用cat >file来创建文件时,按Ctrl+D来结束输入。
        erase : 向后删除字符,擦除最后一个输入字符,默认为Ctrl+?。注意默认情况下退格键Backspace不是删除字符。
        intr : 中断当前程序,默认为Ctrl+C。
        kill : 删除整条命令,删除整行,默认为Ctrl+U。
        quit :退出当前程序,默认为Ctrl+\或Ctrl+|。
        start : 启动屏幕输出,默认为Ctrl+Q。
        stop :停止屏幕输出,默认为Ctrl+S。
        susp : terminal stop当前程序,默认为Ctrl+Z。这样当前进程就会变成后台进程了。

        werase:删除最后一个单词,默认为Ctrl+W。

    stty命令还有一些其他用法,如:

        stty -echo 关闭回显。比如在脚本中用于输入密码时。

        stty echo 打开回显。

    设置退格键Backspace的删除行为   stty erase ^H

    Ctrl+S    -------    Ctrl+Q

    注:按了Ctrl+S之后,就会禁止屏幕输出,从而出现终端僵死的情况。

    这个时候,只要按Ctrl+Q就会结束这种局面,因为它会允许屏幕输出。

    设置 ssh secure shell 支持中文

    只需要设置下/etc/sysconfig/i18n 文件内容如清单 1 所示

    清单 1. 文件内容
    LANG="zh_CN.GB18030"
    SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
    SYSFONT="latarcyrheb-sun16"

    保存之后,SSH 重新登录或运行命令 source ./i18n 就可以显示中文。

    如果想要支持用户登陆后自动支持中文,可以把 source /etc/sysconfig/i18n 这一行代码加入到/etc/profile 这个文件内,这样可以确保 root 账户登陆时自动加载中文设置。

    第三方工具后台运行, screen

    screen rtorrent

    启动之后,按组合键CTRL+A+D可以销毁屏幕,回到命令提示符下。之后你就可以退出了,但是程序还是不会停的。

    运行下面这个命令,可以恢复之前的屏幕:

    screen –r

    当然,也可以根据pid来恢复指定的程序的屏幕输出:

    screen -r pid.tty.host 

  • 相关阅读:
    【04】Vue 之 事件处理
    【03】Vue 之列表渲染及条件渲染
    【02】 Vue 之 数据绑定
    传递参数的模式最适合向函数传入大量可先参数的情形
    ie6 PNG图片透明
    实现表单的输入框当光标为当前时,去掉默认值
    SSIS ->> Environment Variables
    SQL Server ->> FileTable
    SQL Server ->> 间接实现COUNT(DISTINCT XXX) OVER(PARTITION BY YYY)
    SQL Server ->> EXECUTE AS LOGIN/USER和Revert表达式
  • 原文地址:https://www.cnblogs.com/eksay/p/terminal_tty.html
Copyright © 2011-2022 走看看