标签 TTY 下的文章

谈到 Linux 和 UNIX 时,你一定听说过 “TTY” 这个术语,但是,这玩意是什么?

作为一个桌面用户,它对你有用吗?你需要它吗?你能用它做什么?

在本文中,让我向你介绍这些,帮助你熟悉 Linux 中的 TTY。

注意:这个问题没有明确的答案,但它与过去的输入/输出设备的交互方式有关。因此,你必须了解一些历史,才能清楚地了解情况。

“TTY” 背后的历史

一切始于 19 世纪 30 年代的 电传打印机 Teleprinter

电传打印机可以让你通过电线发送或接受消息,它取代了摩尔斯电码通信,那是一种需要两个操作员才能有效地相互通信的方式。

一台电传打印机只需要一个操作员就可以轻松地传递消息。虽然它没有现代布局的键盘,但它的系统后来由 Donald Murray 在 1901 年进行了改良,包括了一个类似打字机的键盘。

Murray 电码减少了操作员发送消息的工作量。这才使得电传打印机在 1908 年有了发展成为商业 电传打字机 Teletypewriter 的可能。TTY 即是电传打字机的缩写。

二战期间在伦敦实际使用的电传打字机 | 图片来源于维基百科

电传打字机和普通 打字机 typewriter 的区别在于,电传打字机连接到通信设备,直接发送输入的消息。

电传打字机使人类在没有计算机的情况下通过电线进行更快的通信成为可能

从这时起,“TTY” 一词就存在了。

(相对)现代的概念

现在,你一定想知道,它是如何进入现代计算机和 Linux 的?

最初是当电传打字机进入了市场,几年后半导体晶体管发展起来,然后演变成微处理器,为计算机的出现做好了准备。

最初的计算机没有键盘的概念, 打孔卡 Punch card 就是输入的方法。

一种插入计算机而不是通过键盘(TTY)输入的打孔卡计算机程序 | 图片来源于维基百科

随着计算机的发展,批量输入的打孔卡最终被电传打字机取代,成为一种方便的输入/输出设备。

1956 年的 LGP-30 计算机,附带 TTY

随着技术的进步,电传打字机被电子技术“虚拟化”了。因此,你不需要一个物理的、机械的 TTY,而是一个虚拟的电子 TTY。

早期的计算机甚至没有视频屏幕。字符被打印在纸上而不是显示在屏幕上。因此,你会看到“ 打印 print ”这个术语而不是“ 显示 display ”。随着技术的进步,视频显示后来被添加到终端中。

换句话说,你可能听说过把它们称为“视频终端”。或者,你可以称它们为“物理”终端。

后来,它们演变成具有更强的能力和功能的软件仿真的终端。

这就是所谓的“ 终端仿真器 terminal emulator ”,如 GNOME 终端或 Konsole,或者其他 你在 Linux 上找到的各种终端仿真器

所以,Linux 中的 TTY 到底是什么?

在 Linux 或 UNIX 中,TTY 变为了一个抽象设备。有时它指的是一个物理输入设备,例如串口,有时它指的是一个允许用户和系统交互的虚拟 TTY(参考此处)。

TTY 是 Linux 或 UNIX 的一个子系统,它通过 TTY 驱动程序在内核级别实现进程管理、行编辑和会话管理。

在编程的场景下,你还需要深入研究。但是考虑到本文的范围,这可能是一个容易理解的定义。

如果你好奇的话,你可以查看一个有点旧的资源(TTY 揭秘),它尽可能的澄清了 Linux 和 UNIX 系统中的 TTY 的各种技术细节。

事实上,每当你在系统中启动一个终端仿真器或使用任何类型的 shell 时,它都会与虚拟 TTY(也被称为 伪 TTY pseudo-TTY ,即 PTY)进行交互。

你可以在终端仿真器中输入 tty 来找到相关联的 PTY。

如何在 Linux 中访问 TTY?

在 Linux 中很容易访问 TTY。事实上,当我不知道它是什么时,我不小心打开了它,于是对要做什么、如何摆脱它感到恐慌。

在大多数 发行版 中,你可以使用以下键盘快捷键来得到 TTY 屏幕:

  • CTRL + ALT + F1 – 锁屏
  • CTRL + ALT + F2 – 桌面环境
  • CTRL + ALT + F3 – TTY3
  • CTRL + ALT + F4 – TTY4
  • CTRL + ALT + F5 – TTY5
  • CTRL + ALT + F6 – TTY6

你最多可以访问六个 TTY。但是,前两个快捷方式指向发行版的锁定屏幕和桌面环境。

而其他快捷方式将会让你进入一个命令行界面。

什么时候应该使用 TTY?

TTY 不仅是一个技术宝藏,即使像我这样不是开发人员的用户,它也很有用。

在图形桌面环境冻结的情况下,它应该可以派上用场。在某些情况下,从 TTY 重建桌面环境能帮助解决程序问题。

或者,你也可以选择在 TTY 中执行任务,例如更新 Linux 系统等。在这些情况下,你不希望显示问题中断你的进程。

最坏的情况是,如果图形用户界面失去响应,你可以进入 TTY 并重新启动计算机。

有些用户还喜欢在 TTY 的帮助下传输大文件(我不是其中之一)。

Linux 中的 TTY 命令

当你在终端模拟器中输入 tty 时,它将打印连接到标准输入的终端文件名,就像手册页描述的一样。

换句话说,要知道你连接的 TTY 编号,只需输入 tty。并且,如果有多个用户远程连接到 Linux 机器,你可以使用 who 命令来检查其他用户连接到的是哪个 TTY。


via: https://itsfoss.com/what-is-tty-in-linux/

作者:Ankush Das 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本简要指南介绍了在类 Unix 操作系统中如何在不使用功能键的情况下切换 TTY。在进一步讨论之前,我们将了解 TTY 是什么。正如在 AskUbuntu 论坛的一个答案中所提到的,TTY这个词来自 TeleTYpewriter(电传打字机)。在 Unix 的早期,连接到计算机的用户终端就是机电的电传机或电传打字机(简称 tty)。从那时起,TTY 这个名称继续用于纯文本控制台。如今,所有文本控制台都代表虚拟控制台,而不是物理控制台。TTY 命令打印连接到标准输入的终端的文件名。

在 Linux 中切换 TTY

默认情况下,Linux 中有 7 个 tty。它们被称为 tty1、tty2……tty7。1 到 6 的 tty 只是命令行。第 7 个 tty 是 GUI(你的 X 桌面会话)。你可以使用 CTRL+ALT+Fn 键在不同的 TTY 之间切换。例如,要切换到 tty1,我们按下 CTRL+ALT+F1。这就是 tty1 在 Ubuntu 18.04 LTS 服务器中的样子。

如果你的系统没有 X 会话, 只需要按下 Alt+Fn 键,不需要按下 CTRL

在某些 Linux 版本中(例如,从 Ubuntu 17.10 开始),登录屏开始使用 1 号虚拟控制台。因此,你需要按 CTRL+ALT+F3CTRL+ALT+F6 来访问虚拟控制台。要返回桌面环境,请在 Ubuntu 17.10 及更高版本上按下 CTRL+ALT+F2CTRL+ALT+F7

目前为止我们看到我们可以使用 CTRL+ALT+FnF1 - F7)在 TTY 之间轻松切换。但是,如果出于任何原因你不想使用功能键,那么在 Linux 中有一个名为 chvt 的简单命令。

chvt N 命令让你切换到前台终端 N,这与按 CTRL+ALT+Fn 相同。如果它不存在,则创建相应的屏幕。

让我们试试显示当前的 tty:

$ tty

我的 Ubuntu 18.04 LTS 服务器的示例输出。

现在让我们切换到 tty2。为此,请输入:

$ sudo chvt 2

记住你需要在 chvt 命令一同使用 sudo

现在,使用命令检查当前的 tty:

$ tty

你会看到 tty 现在已经改变了。

同样,你可以使用 sudo chvt 3 切换到 tty3,使用 sudo chvt 4 切换到 tty4 等等。

当任何一个功能键不起作用时,chvt 命令会很有用。

要查看活动虚拟控制台的总数,请运行:

$ fgconsole
2

如你所见,我的系统中有两个活动的虚拟终端。

你可以使用以下命令查看下一个未分配的虚拟终端:

$ fgconsole --next-available
3

如果虚拟控制台不是前台控制台,并且它没有打开任何进程来读取或写入,并且未在其屏幕上选择任何文本,则它是未使用的。

要移除未使用的虚拟终端,只需键入:

$ deallocvt

上面的命令为所有未使用的虚拟控制台释放内核内存和数据结构。简单地说,此命令将释放连接到未使用的虚拟控制台的所有资源。

有关更多详细信息,请参阅相应命令的手册页。

$ man tty
$ man chvt
$ man fgconsole
$ man deallocvt

就是这些了。希望这很有用。还有更多的好东西。敬请关注!

干杯!


via: https://www.ostechnix.com/how-to-switch-between-ttys-without-using-function-keys-in-linux/

作者:SK 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

当你在 ps aux 的输出中看到 sshd:root@notty 时会觉得很奇怪吧,notty 算是哪门子的主机,是不是黑客计算机的名字啊。不过不用担心;notty 仅仅是表示 没有 tty 而已。

当你在本地登录 Linux 机器时,登录终端会在进程列表中显示为 tty( 比如,tty7)。若你通过 ssh 登录一台远程服务器,则会看到类似 root@pts/0 这样的东西。

而若某个连接是由 sftp 或者是由 scp 拷贝文件而创建的,则该连接会会显示成没有 tty (notty)。

如果你仍然想知道服务器上发生了什么事情,可以检查 ps auxf 的输出来查看进程树,或者运行 netstat -vatn 来检查所有的 TCP 连接。


via: http://www.sysadminworld.com/2011/ps-aux-shows-sshd-rootnotty/

作者:sysadminworld 译者:lujun9972 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本文中包含了很多命令行基础。我们将讨论 TeleTYpe(TTY)和几个命令及其选项。确保做完所有练习,并要知道,除非另有说明,对 CentOS 和 Ubuntu 都是相同的。

TTY

当没有图形用户界面(GUI)或当用户在 GUI 之外,Linux 就会使用 TTY。当打开终端窗口时也使用 TTY,但这些是不同类型的 TTY。

有三种类型的 TTY:

  1. 物理终端
  2. 本地伪终端
  3. 远程伪终端

基本上,每个 Linux 系统有大约六个或七个物理 TTY。 通过按住 CTRL + ALT 键,然后在 CentOS 按住 F1F6 ,而在 Ubuntu 中是 F1F7

注意: 一些发行版可能有不同数量的 TTY 和不同的 GUI 默认位置。有点发行版可能有在物理 TTY 之间切换的不同组合键,如 CTRL + F#ALT + F# ( LCTT 译注:F# 代表 F1、F2 等)。当使用 VirtualBox 时,除非您更改了主机键映射,请使用右 CTRL 键。

在 CentOS 中,GUI 在 TTY1(CTRL + ALT + F1)上,其他物理 TTY 都是基于文本的。 在 Ubuntu 上,GUI 在 TTY7(CTRL + ALT + F7)上,其他物理 TTY 都是基于文本的。

注意: 尝试在另一个 TTY 下加载 GUI 是不明智的,因为这可能耗用大量资源,但你可以这样做。

当 Linux 启动时,不管是 CentOS 还是 Ubuntu,都会打开默认 TTY。如果安装了 GUI,对于 CentOS 是打开 TTY1,对于 Ubuntu 是打开 TTY7。如果你打开一个终端窗口(伪 TTY)并使用命令 who,你可以看到正在使用的 TTY 的列表。 如图 1 所示。

Figure 01.jpg

图 1

在图 1 中,你可以看到我当前登录到 TTY1(非 GUI)。第二行连接显示我已登录到 GUI(TTY7)以及两个伪 TTY(pts/1 和 pts/2)。如图 2,你可以看到新条目显示了远程伪 TTY(pts/4)。 远程伪连接来自 IP 地址为 192.168.0.11 的系统。

Figure 02.jpg

图 2

可以使用诸如 PuTTY 或任何 SSH 的客户端(如果远程 Linux 系统上启用了 SSH)之类的应用程序进行远程 TTY 连接。

如果终端窗口字体比较小,你可以使用 CTRL + SHIFT 键和 + 键来放大字体。多次按下可以更大。要缩小大小,请使用 CTRL + SHIFT + - 不断缩小。要使终端字体恢复为原始大小,请按下 CTRL + SHIFT + 0

注意: 请注意,如果字体已经足够大或足够小了,组合键就不再工作了。

希望你现在已经了解各种类型的 TTY。让我们看看一些可以在 TTY 中使用的命令。

命令

其中一个命令前面已经讨论过了。命令 who 用于显示谁登录到了系统。

另一个命令是 pwd。命令 pwd 代表“ 打印工作目录 Print Working Directory ”。该命令返回你所在的当前目录。例如,如果终端提示符是 [jbuse@localhost〜]$,则用户名为 jbuse,当前目录为 。波浪号()代表用户的主文件夹。主文件夹应该是 /home/USERNAME。用户名是用于登录系统的名称。

要列出当前文件夹的内容,请使用命令 lsls 命令代表 List。如果未指定任何选项,则列出当前文件夹。如果给出文件夹名称,则会列出该文件夹的内容。例如,要查看 media 文件夹的内容,你可以使用命令 ls /media

ls 命令后面我们可以添加一些选项以显示更多详细信息或特定详细信息。如果你想看到所有的文件夹和文件,即使是隐藏的,请使用选项 -a。要查看当前目录中的所有文件和文件夹,请使用命令 ls -a。隐藏的文件和文件夹将在名称前面显示一个句点(.)。

要在每个文件夹名称后看到正斜杠(/),请使用 -F 选项。当前文件夹列表将是 ls -F-F 用于按文件类型对文件进行分类。符号链接在文件夹名称后用 @ 表示。

你可以把这两个选项连在一起形成 ls -aF

注意: 一些选项可能有不同的大小写。选项区分大小写。

另一个选项是显示长列表的 -l。示例输出如图 3 所示。文件夹和文件名称列在右侧。文件为白色,文件夹为深蓝色,符号链接为浅蓝色。如图 3 所示,符号链接 vtrgb 链接自 /etc/alternatives/vtrgb

Figure 03.jpg

图 3

左侧的第一列是文件或文件夹的权限。第一个字母是 d 的为目录,是 - 的为文件。接下来的三个字母显示所有者的权限(r - 读、w - 写、x - 执行),后面是组权限以及“其他人”的权限。下一列数字显示指向文件或文件夹的链接数。再下一列是所有者名称,后面是所有组名称。再下一列是文件或文件夹在存储设备上占用的字节数。接下来的三列是文件上次修改的月份、日期和年份。最后一列是路径名。

目前为止,你可以看到列表是按字母顺序排序。要颠倒从 “z” 到 “a” 而不是 “a” 到 “z” 的顺序,请使用 -r 选项。逆转选项 -r 使 ls 命​​令反转输出顺序。

要按修改的时间戳列出文件,请使用 -t 选项。顺序是从最近修改到最早的修改日期。当然,在命令 ls -tr 中,同时使用 -t-r 颠倒了顺序。

如果你不喜欢看文件的长长的字节数,使用选项 -h。输出将会更易读,如显示 4.0K 而不是 4096

要获取单个文件夹的特定信息,请使用选项 -d,但必须指定该文件夹。例如,要查看文件夹 /media 的详细信息,请使用命令 ls -ld /media

另一个要熟悉的命令是命令 cat。命令 cat 用于将标准输入(文件)复制到标准输出(屏幕)。使用 cat 可以轻松地查看文件的内容。例如,要查看名为 text 的文件的内容,如果你与文件 text 在同一个文件夹中请使用命令 cat text。如果你不在同一个文件夹中,那么你必须指定位置。例如,如果文件 text 在文件夹 /home/jarret/test/ 中,那么命令将是 cat /home/jarret/test/text

另一个非常有用的命令是 manman 命令用于查看特定命令的文档。例如,要查看命令 ls 的帮助页面,请使用命令 man ls

注意: 记住,在 LFCS 考试中,你可以使用 man 命令。

查看这些命令并测试它们以熟悉它们。使用 man 命令,查看本文中的命令以查看其他可用的选项。


via: https://www.linuxforum.com/threads/lfcs-command-line-basics.3334/

作者:Jarret 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出