设为首页 收藏本站
查看: 903|回复: 0

[经验分享] RedHat Enterprise Linux Computing Essentials 总揽之管理终端

[复制链接]

尚未签到

发表于 2018-5-13 06:41:58 | 显示全部楼层 |阅读模式
  五、管理终端
  主要概念


  • 各种控制键组合,如 CTRL-CCTRL-D, 和 CTRL-Z,有助于从终端上管理进程。
  • 通常用reset 命令将终端设置恢复为正常状态。
  • bash shell 提供了 tab 补全功能(tab completion),在指定命令或文件时节省了很多打字时间。
  • 了解 Linux 如何引用设备,可以区分各种类型的终端。
  讨论
  
  
控制终端
  bash shell 及其运行的终端,是有经验的 Linux 用户使用的主要工具。这个课程专门有一整本教程讨论 bash shell 的强大功能。本课我们介绍终端共有的一些特征,和 bash shell 极有用的一项功能 - tab 补全功能(tab completion)。
  复位终端
  
终端显示信息时,会逐字节显示。计算机在处理人可读文本时,通常使用 ASCII 格式将字符编码为整数字节值。虽然一个字节最多可以编入 256 个不同的值,只有一小部分(大约 100 个)用作文本字符和标点符号。其它值用来编码控制键组合和其它特殊情况。
  有时,用户会不小心(或有意)指示终端显示格式没有被编码为 ASCII 文本的数据,如图像或可执行文件。终端会尽量执行,但经常出现的是乱码。更麻烦的是,终端可能会死在图形模式中,因此甚至应该是正常的 ASCII 文本看起来也不可读。
  在这种情况下,reset 命令可将终端恢复到正常状态。通常当你使用这个命令时,你甚至看不到自己在键入它。但如果在一个不可读的 bash 提示下,输入 reset 然后点击 RETURN 键,可以把终端恢复到正常状态。
  终端控制组合键
  
Linux 终端与它的原始前身,电传打字机和“哑终端”或 vt100 类型控制台,有许多相似之处。这些早期的设备有发送“特殊”信号或信号序列的机制,信号序列代表正常键入的字符流以外的一些事件,如:后退一格、换行、音 效或信息传递结束。Linux 终端和它的前身一样,使用 CTRL 键发送这些“特殊”信号。
  下面的表格总结了所有 Linux 终端共享的许多常用控制组合键及其常见用法。在这个表格之后我们还会根据其适用性一步讨论这些控制组合键。
  Table 1. Linux 终端控制组合键
  

组合键
符号名称
约定使用
CTRL-C
SIGINT
非常规中断 - 终止前台进程
CTRL-D
EOT
输入完成的正常信号
CTRL-G
BEL
终端声效
CTRL-H
BS
后退一格 - 删除前一个字符
CTRL-J
LF
换行 - 与 RETURN 键功能相同
CTRL-L
FF
换页 - 使 bash 清屏,使其它基于屏幕的程序“刷新”当前屏幕
CTRL-Q
解冻终端显示(见 CTRL-S)
CTRL-S
冻结终端显示(使用 CTRL-Q 解冻)
CTRL-U
NAK
删除当前的行
CTRL-Z
SIGSTOP
挂起前台进程  CTRL-C
  

  CTRL-C 可能是最有用的组合键,帮助用户停止现在进行的工作。使用 bash shell 时,点击 CTRL-C 可以终止当前运行的进程,返回到 bash 提示。
  设备节点 /dev/zero 是假设备,读取时会返回无数个(二进制)零。/dev/null 设备节点也是一个假设备,会删除任何写入其中的信息。因此以下命令会永远运行下去,读取零,然后删除。处于这种情况的用户可以使用 CTRL-C 取消这个命令。

Source code
  

  
[elvis@station elvis]$ cat /dev/zero > /dev/null
  
(... user types CTRL-C ...)
  
[elvis@station elvis]$
  

  CTRL-D
  
在以后的教程中我们会谈到,许多 Unix 命令直接从键盘读取输入。但对于新的 Unix 用户来说,如何通知命令何时停止读取输入常常是不明显的。解决这个问题的办法是用组合键 CTRL-D。这组控制键向读取的进程传送“信息传递完毕”的信号(一般理解为“文件结束”)。
  wc 命令在没有给出文件名作为参数的情况下,会对用户从键盘输入的行、词和字符进行计数。用户使用组合键 CTRL-D 表示输入结束。

Source code
  

  
[elvis@station elvis]$ wc
  
polly wants a cracker
  
polly wants a cracker
  
polly wants a cracker
  
(... user types CTRL-D ...)
  
3      12      66
  
[elvis@station elvis]$
  

  命令 wc 会负责地报告,用户输入了 3 行,共有 12 个词,使用了66个字符。(这个功能现在可能没有用,但在以后的教程中我们还会学到更多的 wc 的用法。)如果用户使用 CTRL-C 又会怎么样呢?
  CTRL-Z
  
组合键 CTRL-Z 用来挂起程序,挂起的程序可用 fg(“foreground”(前台))命令恢复。在进行 ftp 会话时,elvis 想要确认 shell 的当前工作目录。他使用 CTRL-Z 挂起正在进行的 ftp, 从 shell 运行 pwd 命令,然后用 fg. 恢复 ftp 会话。
  


Source code
  

  
[elvis@station elvis]$ ftp ftp.redhat.com
  
Trying 66.187.232.51...
  
Connected to ftp.redhat.com (66.187.232.51).
  
220 Red Hat FTP server ready. All transfers are logged. (FTP)
  

  
Name (ftp.redhat.com:elvis): anonymous
  

  
331 Please specify the password.
  
Password:
  
230 Login successful. Have fun.
  
Remote system type is UNIX.
  
Using binary mode to transfer files.
  
ftp>
  

  
(... user types CTRL-Z ...)
  

  
[1]+  Stopped                 ftp ftp.redhat.com
  

  
[elvis@station elvis]$ pwd
  

  
/home/elvis
  

  
[elvis@station elvis]$ fg
  

  
ftp> ftp.redhat.com
  

  
ftp> ls
  

  
227 Entering Passive Mode (66,187,232,51,67,212)
  
150 Here comes the directory listing.
  
drwxr-xr-x    6 ftp      ftp          4096 May 24 01:33 pub
  
226 Directory send OK.
  
...
  

  以这种方式管理进程是相当复杂的,在以后的教程中我们会再讨论。现在我们只要知道 CTRL-Z 用来挂起、fg 用来恢复就可以了。
  CTRL-U
  
CTRL-U 一般用来“擦除”当前的行。如果你所在的 bash 命令行错误繁多,你懒得修改,不如使用 CTRL-U 重新来过。如果你输入密码时弄错了,也可以使用 CTRL-U。因为输入的密码不会在屏幕上显示,有时很难知道到底输入了什么,很难改动,不如使用 CTRL-U 组合键重新来过。
  CTRL-H
  
CTRL-HBACKSPACE 的功能完全一样。但在有些终端上,BACKSPACE 键被错误的映像,不能正确工作。而 CTRL-H 几乎总是可以在这些情况下正常发挥作用。
  

  
CTRL-L
  
CTRL-L 传统上用来停止打印当前的页,开始下一页。如果使用在线终端,可以用它来刷新屏幕。对于许多基于屏幕的程序而言,包括 vi 和 nano 编辑器,如果意外的信息弄乱了显示屏,使用 CTRL-L 可以让程序刷新屏幕,正确地重绘屏幕。
  在 bash shell 中,CTRL-L 指示 bash 清屏,但保留当前的命令行。
  CTRL-Q
  
CTRL-S“冻结”屏幕后,CTRL-Q“解冻”屏幕(让它重新启动)。虽然在使用过 CTRL-Q 后,才能用这个组合键,我们先介绍它(作为更有用的命令)是因为,几乎没有人会故意使用CTRL-S,但新的 Unix 用户有的时候会不小心点击 CTRL-S 组合键,不明白为什么他们的屏幕会冻结起来。如何你的机器出现死屏的现象,试着使用CTRL-Q 看能否解冻。
  CTRL-S
  
见上一项CTRL-Q
  CTRL-J
  
几乎从来不用。(一般使用 RETURN 键。)
  CTRL-G
  
唯一真正的用途是让终端发出响声。
  识别终端
  
和其它设备相似,程序通过位于目录 /dev 的设备节点和终端在底层交流。比如说,使用设备节点 /dev/tty1 和第一个虚拟控制台交流。大多数进程记录启动它们的终端,用户的登录会话通常与他们使用的终端相关。在辨识这些终端时,终端用它的设备节点来代表,如 tty1。
  在以下的摘录中,elvis 使用 who 列出一台机器上的当前用户,他还用ps 列出从他的终端上运行的当前进程。在这两种情况下,终端都在列“TTY”中指定。

Source code
  

  
[elvis@station elvis]$ who
  
root     tty2         Jun 21 10:12
  
elvis    tty3         Jun 21 16:50
  
blondie  :0           Jun 21 10:13
  
blondie  pts/0        Jun 21 16:43 (:0.0)
  
blondie  pts/1        Jun 21 10:14 (:0.0)
  
blondie  pts/2        Jun 21 10:31 (:0.0)
  
blondie  pts/3        Jun 21 10:39 (:0.0)
  

  
[elvis@station elvis]$ ps
  

  
PID TTY          TIME CMD
  
4384 tty3     00:00:00 bash
  
4427 tty3     00:00:00 ps
  

  Linux 将许多设备都当成终端,包括虚拟控制台、串行线连接的 VT100 终端、调制解调器等。以下的表格列出一些常用的终端设备的惯例名称。
  Table 1. 终端设备名称
  

名称
设备
使用
ttyn
虚拟控制台
使用 CTRL-ALT-Fn 组合键访问。
ttySn
串口端口设备
连接到串行端口上的调制解调器或 VT100 类型。Unix 中的 ttyS0 等于 DOS 中的 COM1,COM2 等于 ttyS1,以此列推。
pts/n
假终端
一个终端模拟,经常被 X 图形环境中的终端窗口或起始于网络的 shell (如 telnet 和 ssh )使用。假终端不能直接与物理设备相联系。
:0
X 服务器
X 服务器并不是真正的终端。当用户使用 X 图形环境的登录管理器登录时,其终端经常被列为 X 服务器本身。  tab 补全功能
  
tab 补全功能并不是终端的特征,而是 bash shell 的特征。输入命令和文件的名称时,能够熟练使用 TAB 键,可以节省很多时间和精力。
  往 bash 命令行输入第一个词作为命令名的时候,输入你要执行的命令,在完成之前点击TAB 键,会出现以下三种情况之一。


  • 命令还没有输入的部分自动出现。
  • 没输入的命令出现一部分,然后 bash 会停下来,发出“嘟嘟”的声音。
  • bash 发出“嘟嘟”的声音。
  bash shell 尽量从所有可能的命令中帮你选择你正在输入的命令。在第一种情况下,只有一个命令是以你输入的字母开头的,bash 能够准确地找到你要执行的命令,帮你补全剩余部分。
  在第二种和第三种情况下,不止一个命令是以你输入的字母开头的。bash 尽量补全命令,但是停下来发出“嘟嘟”的声音,提醒你还有其他的选择。要浏览 bash 已经帮你缩小了的选择范围,再次点击 TAB 键,bash 会显示所有以你输入的字母开始的命令。提供进一步信息,让 bash 能够肯定你所需的命令,再次点击 TAB 键,bash 会帮你补全命令。
  下面我们来看一个例子。
  用户 elvis 希望为他的终端启用 Unicode 模式。我们现在先不管 Unicode 模式是什么,或者他为什么要启用。你只需要知道启动Unicode 模式的命令是 unicode_start,停止它的命令是 unicode_stop。他开始输入命令,然后点击TAB 键。

Source code
  

  
[elvis@station elvis]$ unic<TAB>
  

  bash 把这个词扩展为 unicode_st,然后发出“嘟嘟”的响声。为了看到可能的补全列表,elvis 点击了 TAB 两次。

Source code
  

  
[elvis@station elvis]$ unicode_st<TAB><TAB>
  
unicode_start   unicode_stop
  

  bash 显示两个以 unicode_st 开头的命令。elvis 要执行的是唯一以 unicode_sta 开头的命令,他输入 a,再点击TAB

Source code
  

  
[elvis@station elvis]$ unicode_sta<TAB>
  

  bash 补全了命令,闪烁光标,以便可以开始为命令输入任何参数或命令行选项。

Source code
  

  
[elvis@station rha030]$ unicode_start
  

  bash 不光能使用现有的命令完成命令行的第一个词,它还可以用文件系统中的文件帮你完成命令行的其它部分。例如,madonna 要查看文件 /etc/prelink.conf。她不需要输入文件全名,她可以只输入前面的部分,然后点击 TAB

Source code
  

  
[madonna@station madonna]$ cat /etc/prel<TAB>
  

  因为 /etc/prelink.conf 是唯一以 /etc/prel 开头的文件,bash 可以补全文件名。

Source code
  

  
[madonna@station madonna]$ cat /etc/prelink.conf
  
# This config file contains a list of directories both with binaries
  
# and libraries prelink should consider by default.
  
# If a directory name is prefixed with `-l ', the directory hierarchy
  
# will be walked as long as filesystem boundaries are not crossed.
  
# If a directory name is prefixed with `-h ', symbolic links in a
  
# directory hierarchy are followed.
  
-l /bin
  
-l /usr/bin
  
...
  

  随着深入学习这门课程,花点时间熟悉 tab 补全功能,可以帮你节省很多时间和精力。用熟以后,使用TAB 键会变成本能。一天下来,左手的小拇指因为不断敲击TAB 键而变得酸痛。
  Examples
  浏览二进制文件后复位终端。
  
用户 blondie 无意中使用命令 cat 浏览了一个可执行文件 /bin/arch。由于这是一个编译型可执行文件,含有不应该在终端显示的字节,使她的终端变得乱糟糟的。

Source code
  

  
[blondie@station blondie]$ cat /bin/arch
  
ELF??414 (44???4????/lib/ld-linux.so.2GNU???y??6,?????aaa????aac????-?????[???
  

  为了复位终端,blondie 盲打了 reset 命令,将终端恢复正常状态。

Source code
  

  
[blondie@station blondie]$
  

  取消命令
  用户 prince 觉得从根目录 / 开始递归地列出文件系统的内容会很有趣。

Source code
  

  
[prince@station prince]$ ls -R /
  
/:
  
bin   data  etc   initrd  lost+found  mnt  proc  root  sbin  usr  web
  
boot  dev   home  lib     misc        opt  rha   RPMS  tmp   var
  

  
/bin:
  
arch           cut            gawk      mail           rm         touch
  
ash            date           gettext   mkdir          rmdir      true
  
ash.static     dd             grep      mknod          rpm        umount
  
aumix-minimal  df             gtar      mktemp         rvi        uname
  
awk            dmesg          gunzip    more           rview      unicode_start
  
basename       dnsdomainname  gzip      mount          sed        unicode_stop
  
bash           doexec         hostname  mt             setfont    unlink
  
bash2          domainname     igawk     mv             setserial  usleep
  
...
  

  他花了几分钟看文件,觉得看够了,就用 CTRL-C 取消命令。命令终止,他返回到 bash 提示。

Source code
  

  
[prince@station prince]$
  

  练习
  挂起终端输出
  
[Warning]    上机练习
  练习目的:学习管理长时间运行的命令的终端输出。
  Estimated Time: 5 mins.
  具体操作


  • 和示例中的 prince 一样,使用命令 ls -R / 递归地列出文件系统的根目录内容。
  • 在输出滚动显示的时候,用控制键组合 CTRL-S 冻结你的终端。
  • 使用控制键组合 CTRL-Q 解冻终端。你应该可以用这两组控制键交替冻结和解冻终端。
  • 当命令不断输出时,使用控制键组合 CTRL-Z 挂起进程。
  • 确认进程已经挂起。
  结果
  
A>  
Question 1


  • 停止(挂起)的ls -R / 命令。
  
  
Cleaning Up
  检查你练习的结果后,使用命令fg 把挂起的进程恢复到前台。使用控制键组合 CTRL-C 取消命令。
  整理袜子。
  
[Warning]    上机练习
  练习目的:学习如何有效终止从键盘上读取命令输入。
  Estimated Time: 5 mins.
  具体操作
  
你想在主目录下的文件 sorted_socks.txt 中生成一个列表,列出分类的袜子(按字母顺序排列)。


  • 在主目录中运行命令sort > sorted_socks.txt。命令不应该马上终止,而要等待键盘输入。
  • 输入几种袜子类型,如“yellow socks(黄袜子)”、“dirty socks(脏袜子)”、“cool winnie the pooh socks(酷酷的维尼熊袜)”等。使用 RETURN 键将每种袜子用新行隔开。
  • 列出几种袜子后,用控制键 CTRL-D 终止列表。现在你应该有一个文件,其中含有被分类的袜子的列表。
  • 退出 shell,以便保存历史记录。

Source code

  

  
[student@station student]$ sort > sorted_socks.txt
  
yellow socks
  
dirty socks
  
cool winnie the pooh socks
  
(... type CTRL-D ...)
  
[student@station student]$ cat sorted_socks.txt
  
cool winnie the pooh socks
  
dirty socks
  
yellow socks
  

  结果

  
A>  
Question 1


  • 你的主目录含有一个名为 sorted_socks.txt 的文件,这个文件含有被分类的袜子的列表,和含有命令sort > sorted_socks.txt 的文件 .bash_history。
  问题
  
A>  Question 1
  
以下哪个命令会把终端恢复到正常状态?


  • A.sanetty
  • B.reload
  • C.start-unicode
  • D.reset
  • E.sane
  Question 2
  
以下哪个控制键组合可以挂起命令?


  • A.CTRL-C
  • B.CTRL-D
  • C.CTRL-Q
  • D.CTRL-U
  • E.CTRL-Z
  Question 3
  
如果你见到一个完全没有反应的终端,以下哪个控制键组合会重新让它活动起来?


  • A.CTRL-C
  • B.CTRL-D
  • C.CTRL-Q
  • D.CTRL-U
  • E.CTRL-Z
  Question 4
  
如果你怀疑你输入了错误的密码,哪个控制键组合可以让你重头开始?


  • A.CTRL-C
  • B.CTRL-D
  • C.CTRL-Q
  • D.CTRL-U
  • E.CTRL-Z
  Question 5
  
如果你要取消一个产生太多输出的命令,哪个控制键组合最有用?


  • A.CTRL-C
  • B.CTRL-D
  • C.CTRL-L
  • D.CTRL-S
  • E.CTRL-U
  
  
Question 6
  
如果你想冻结终端输出,以便晚些时候继续,哪个控制键组合最有用?
  
A.CTRL-C
  
B.CTRL-D
  
C.CTRL-L
  
D.CTRL-S
  
E.CTRL-U
  Question 7
  
哪个控制键组合指示 bash 清屏?
  
A.CTRL-C
  
B.CTRL-D
  
C.CTRL-L
  
D.CTRL-S
  
E.CTRL-U
  使用命令 who 的输出回答下列问题。
  


Source code

  

  
[prince@station prince]$ who
  
blondie  tty2         Apr 21 22:07
  
elvis    tty1         Apr 21 22:07
  
elvis    tty3         Apr 21 22:07
  
root     tty6         Apr 21 22:07
  
prince   :0           Apr 21 21:50
  
prince   pts/0        Apr 21 21:53 (:0.0)
  
prince   pts/1        Apr 21 21:54 (:0.0)
  
prince   pts/2        Apr 21 21:55 (:0.0)
  
madonna  pts/3        Apr 21 22:08 (:0.0)
  

  Question 8
  
用户 blondie 是如何登录企业版 Linux 机器的?


  • A.使用 X 图形环境中的登录管理器。
  • B.虚拟控制台。
  • C.串行线连接的终端。
  • D.ssh 网络连接。
  • E.无法从所给信息判断登录方式。
  Question 9
  
用户 prince 是如何登录企业版 Linux 机器的?


  • A.使用 X 图形环境中的登录管理器。
  • B.虚拟控制台。
  • C.串行线连接的终端。
  • D.ssh 网络连接。
  • E.无法从所给信息判断登录方式。
  Question 10
  
哪个用户以管理员根用户的身份登录?


  • A.blondie
  • B.elvis
  • C.madonna
  • D.prince
  • E.It cannot be determined with the information provided.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-459284-1-1.html 上篇帖子: RedHat Enterprise Linux Computing Essentials 总揽之内核和进程 下篇帖子: RedHat Enterprise Linux Computing Essentials 总揽之Getting Help
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表