我们的系统中可以使用7个终端。tty7
基于GUI。
我怎么知道我当前正在使用哪个tty?
就像tty1,tty2 .... tty6吗?
我们的系统中可以使用7个终端。tty7
基于GUI。
我怎么知道我当前正在使用哪个tty?
就像tty1,tty2 .... tty6吗?
Answers:
有几种方法可以找出答案。我会使用who am i
(not who
)命令:
$ who am i
ravexina tty2 2017-04-10 11:19 (:0)
当我在图形终端中时,它将返回类似以下内容的内容:
ravexina pts/0 2017-04-10 1:19 (:0)
在使用图形终端的ssh会话下,结果是相同的,但是我将获得我的计算机IP(192.168.xx),而不是(:0)。像其他的命令w
,who
,pgrep
,ps
,等是也有帮助。
例如,找出tty
运行图形界面的位置:
ps $(pgrep Xorg)
就我而言,因为我不使用gdm或slim这样的显示管理器,它会产生:
PID TTY STAT TIME COMMAND
1693 tty1 Sl 0:05 /usr/lib/xorg/Xorg
who am i
什么也不返回,然后whoami
返回zanna
,(同时who
返回所有会话(我记得一个相关的问题(被证明无法回答),在该问题中我们注意到不同的仿真器从中产生了不同的输出who
))。
who am i
它将在vt中始终可以很好地工作,并且pgrep
非常聪明(您可能希望$()
对命令子语法使用语法-反引号在markdown中可能会引起混淆),因此您的答案非常好,无论投票否决的人都不应这样做...
使用tty
命令。
如果我是对的,这是参考:
/dev/tty1 - tty1
/dev/tty2 - tty2
/dev/tty3 - tty3
/dev/tty4 - tty4
/dev/tty5 - tty5
/dev/tty6 - tty6
pts
表示您正在从GUI或通过SSH使用终端
让我们退后一步,从困惑开始:什么是tty?最初,tty是电传打字机的缩写,后来变成了玻璃电传打字机,它变成了任何终端或到一个终端的连接,特别是一个串行端口(这些仍然存在,最常见的是/ dev / ttyS0,/ dev / ttyUSB0,有时甚至是/ dev / ttyacm0)。然后,您获得了伪tty和虚拟tty。旧的UNIX手熟悉伪tty,这些伪tty用于远程终端(ssh和telnet),虚拟终端(xterm等)和终端多路复用器(屏幕和tmux)。随着时间的推移,伪tty有了各种各样的命名方案,但是当前的ttys使用的名称类似于/ dev / pts / 0。另一方面,虚拟tty与虚拟控制台相关联,特别是当您使用控制Alt功能键时,您正在切换虚拟控制台,每个虚拟控制台都与虚拟tty配对。
因此,如果您需要查找伪tty(或在使用文本模式时为虚拟tty),则可以使用各种解决方案,例如,who am i
或者ps ax|grep $$
这样做相对容易,因为在标准io上打开伪tty时,有多种方法可以找到它。在大多数情况下,即使io重定向,也有其他方法可以使用。只要不使用图形终端仿真器或终端多路复用器,这还具有在使用串行端口和虚拟tty时也可以做正确的事情的优点。
但是,如果您想识别虚拟控制台怎么办?sudo fgconsole
对于互动案例可能很有用。或者,我要做的只是漫步控制台,因为切换通常足够快。我不知道在非交互或非前景情况下可靠运行的程序化方法。
让我们看一个保证永远无法可靠回答虚拟控制台的示例。我坐在(alpha)前面的计算机上有一个运行在tty2(:1)上的Xserver,我有三个打开两个xterm的窗口和一个vncviewer(连接到bravo:2)。一个xterm正在运行屏幕,另一个正在运行ssh charley。屏幕上有两个打开的窗口,ssh delta和谁(谁正确识别了第二列中的伪tty并(:1:S0)
在第五列中提供了提示,告诉我们伪tty连接到了连接到第二个X服务器的第一个屏幕会话,但不提供任何虚拟控制台信息)。通过任一ssh会话运行谁都可以提示(alpha)
可以确定ssh会话来自的机器,对于远程会话来说比较好。尽管很少有关于连接到伪tty的信息(并且绝对没有虚拟控制台或什至远程tty信息可用),至少可以识别远程主机。由于屏幕会话是可分离的,因此有关屏幕的信息可能是错误的,并且vnc根本不提供有用的信息,因为vnc会话和本地会话之间的唯一区别是显示号。在许多情况下,您可以假设tty7上始终不包含:0,而我自己从来没有,因为bravo根本没有显卡,并且:0是vnc会话(这使谁感到困惑,因为它认为这是本地控制台)而且没有一台机器使用tty7作为图形会话,因为我(不只是相反)将日志转储到tty7(和tty5,tty6和tty8还可以将图形会话连接到其他地方。但是等待屏幕也可以用作终端程序,使您可以通过串行电缆建立会话。当谁运行时,这样的会话报告什么?为什么不选择串行端口,无论是同时通过vnc,xterm,ssh,screen和usb串行适配器,还是连接到我的远程视频。
登录到tty后,它会自动在第一行显示正在使用的tty。
如果按键盘组合键Ctrl+ Alt+ F3仅显示黑屏(如您在注释中所写),则有另一种方法可以在引导计算机时访问root shell,而无需按Ctrl+ Alt+ F3来弹出tty。
在引导过程中,紧随BIOS / UEFI启动屏幕之后,使用BIOS,快速按住该Shift键,将弹出GNU GRUB菜单。(如果看到Ubuntu徽标,则您错过了进入GRUB菜单的要点。)使用UEFI时,按(也许几次)Esc按键即可进入GRUB菜单。有时,制造商的启动屏幕是Windows引导程序的一部分,因此,在打开计算机电源时,它会直接进入GRUB屏幕,然后Shift不需要按。
在第一个紫色的GNU GRUB屏幕上,使用↑和↓键选择Ubuntu的“高级”选项,然后按Enter。然后,另一个紫色GNU GRUB菜单菜单将提示您,其中包含内核选项列表。
按向下箭头键,直到从顶部选择第二个条目(说明中为恢复模式的条目),然后按Enter。
现在,您应该看到以下恢复菜单:
使用箭头键向下滚动到root,然后按Enter。
现在,您应该看到一个根提示符,如下所示:
root@ubuntu:~#
在这一阶段,您应该拥有一个只读文件系统。您必须使用写入权限重新安装它:
mount -o rw,remount /
现在,您可以运行与终端相同的命令。