TLCL学习笔记03——键盘高级操作技巧、权限、进程

1. 键盘高级操作技巧

  • clear - Clear the screen   清空屏幕

  • history - Display the contents of the history list   显示历史列表内容

移动光标

表9-1: 光标移动命令
按键 行动
Ctrl-a 移动光标到行首。
Ctrl-e 移动光标到行尾。
Ctrl-f 光标前移一个字符;和右箭头作用一样。
Ctrl-b 光标后移一个字符;和左箭头作用一样。
Alt-f 光标前移一个字。
Alt-b 光标后移一个字。
Ctrl-l 清空屏幕,移动光标到左上角。clear 命令完成同样的工作。

修改文本

表9-2列出了键盘命令,这些命令用来在命令行中编辑字符。

表9-2: 文本编辑命令
按键 行动
Ctrl-d 删除光标位置的字符。
Ctrl-t 光标位置的字符和光标前面的字符互换位置。
Alt-t 光标位置的字和其前面的字互换位置。
Alt-l 把从光标位置到字尾的字符转换成小写字母。
Alt-u 把从光标位置到字尾的字符转换成大写字母。

剪切和粘贴文本

         Readline 的文档使用术语 killing 和 yanking 来指我们平常所说的剪切和粘贴。 剪切下来的本文被存储在一个叫做剪切环(kill-ring)的缓冲区中。

表9-3: 剪切和粘贴命令
按键 行动
Ctrl-k 剪切从光标位置到行尾的文本。
Ctrl-u 剪切从光标位置到行首的文本。
Alt-d 剪切从光标位置到词尾的文本。
Alt-Backspace 剪切从光标位置到词头的文本。如果光标在一个单词的开头,剪切前一个单词。
Ctrl-y 把剪切环中的文本粘贴到光标位置。

自动补全

         当你敲入一个命令时, 按下 tab 键,自动补全就会发生。
         自动补全也能对变量起作用

表9-4: 自动补全命令
按键 行动
Alt-? 显示可能的自动补全列表。在大多数系统中,你也可以完成这个通过按 两次 tab 键,这会更容易些。
Alt-* 插入所有可能的自动补全。当你想要使用多个可能的匹配项时,这个很有帮助。

         set | less查看所用Linux的自动补全

搜索历史命令

        在默认情况下,bash 会存储你所输入的最后 500 个命令。
        启动递增搜索, 输入 Ctrl-r,其后输入你要寻找的文本。当你找到它以后,你可以敲入 Enter 来执行命令, 或者输入 Ctrl-j,从历史列表中复制这一行到当前命令行。再次输入 Ctrl-r,来找到下一个 匹配项(向上移动历史列表)。输入 Ctrl-g 或者 Ctrl-c,退出搜索。

表9-5: 历史命令
按键 行为
Ctrl-p 移动到上一个历史条目。类似于上箭头按键。
Ctrl-n 移动到下一个历史条目。类似于下箭头按键。
Alt-< 移动到历史列表开头。
Alt-> 移动到历史列表结尾,即当前命令行。
Ctrl-r 反向递增搜索。从当前命令行开始,向上递增搜索。
Alt-p 反向搜索,不是递增顺序。输入要查找的字符串,然后按下 Enter,执行搜索。
Alt-n 向前搜索,非递增顺序。
Ctrl-o 执行历史列表中的当前项,并移到下一个。如果你想要执行历史列表中一系列的命令,这很方便。

历史命令展开

        一个感叹号 ,其后再加上一个数字,可以把来自历史列表中的命令插入到命令行中。
        应该小心谨慎地使用 “!string” 和 “!?string” 格式,除非你完全确信历史列表条目的内容。

表9-6: 历史展开命令
序列 行为
!! 重复最后一次执行的命令。可能按下上箭头按键和 enter 键更容易些。
!number 重复历史列表中第 number 行的命令。
!string 重复最近历史列表中,以这个字符串开头的命令。
!?string 重复最近历史列表中,包含这个字符串的命令。

2. 权限

  • id – Display user identity   显示用户身份号

  • chmod – Change a file’s mode    更改文件模式

  • umask – Set the default file permissions   设置默认的文件权限

  • su – Run a shell as another user   以另一个用户的身份来运行 shell

  • sudo – Execute a command as another user   以另一个用户的身份来执行命令

  • chown – Change a file’s owner   更改文件所有者

  • chgrp – Change a file’s group ownership   更改文件组所有权

  • passwd – Change a user’s password    更改用户密码

拥有者,组成员,和其他人

        可以用 id 命令,来找到关于你自己身份的信息。
        当用户创建帐户之后,系统会给用户分配一个号码,叫做用户 ID 或者 uid,然后,为了符合人类的习惯,这个 ID 映射到一个用户名。
        系统又会给这个用户 分配一个原始的组 ID 或者是 gid,这个 gid 可能属于另外的组。

读取,写入,和执行

            例如:
-rw-rw-r-- 1 me   me   0 2008-03-06 14:52 foo.txt
         列表的前十个字符是文件的属性。这十个字符的第一个字符表明文件类型。剩下的九个字符,叫做文件模式,代表着文件所有者,文件组所有者,和其他人的读,写,执行权限。
表10-1: 文件类型
属性 文件类型
- 一个普通文件
d 一个目录
l 一个符号链接。注意对于符号链接文件,剩余的文件属性总是"rwxrwxrwx",而且都是 虚拟值。真正的文件属性是指符号链接所指向的文件的属性。
c 一个字符设备文件。这种文件类型是指按照字节流,来处理数据的设备。 比如说终端机,或者调制解调器
b 一个块设备文件。这种文件类型是指按照数据块,来处理数据的设备,例如一个硬盘,或者 CD-ROM 盘。

chmod - 更改文件模式

    更改文件或目录的模式(权限),可以利用 chmod 命令。注意只有文件的所有者或者超级用户才 能更改文件或目录的模式。
     chmod 命令支持两种不同的方法来改变文件模式:八进制数字表示法,或 符号表示法。
    
八进制数字表示法:
        通过八进制表示法,我们使用八进制数字来设置所期望的权限模式。因为每个八进制数字代表了 3个二进制数字,这种对应关系,正好映射到用来存储文件模式所使用的方案上。
Octal Binary File Mode
0 000 ---
1 001 --x
2 010 -w-
3 011 -wx
4 100 r--
5 101 r-x
6 110 rw-
7 111 rwx

        通过使用3个八进制数字,我们能够设置文件所有者,用户组,和其他人的权限:

[me@linuxbox ~]$ chmod 600 foo.txt


符号表示法:

表10-4: chmod 命令符号表示法
u "user"的简写,意思是文件或目录的所有者。
g 用户组。
o "others"的简写,意思是其他所有的人。
a "all"的简写,是"u", "g"和“o”三者的联合。

        如果没有指定字符,则假定使用”all”。执行的操作可能是一个“+”字符,表示加上一个权限, 一个“-”,表示删掉一个权限,或者是一个“=”,表示只有指定的权限可用,其它所有的权限被删除。

表10-5: chmod 符号表示法实例
u+x 为文件所有者添加可执行权限。
u-x 删除文件所有者的可执行权限。
+x 为文件所有者,用户组,和其他所有人添加可执行权限。 等价于 a+x。
o-rw 除了文件所有者和用户组,删除其他人的读权限和写权限。
go=rw 给群组的主人和任意文件拥有者的人读写权限。如果群组的主人或全局之前已经有了执行的权限,他们将被移除。
u+x,go=rw 给文件拥有者执行权限并给组和其他人读和执行的权限。多种设定可以用逗号分开。

umask - 设置默认权限

       当创建一个文件时,umask 命令控制着文件的默认权限。

       umask 命令使用八进制表示法来表达 从文件模式属性中删除一个位掩码

       大多数情况下,你不必修改掩码值,系统提供的默认掩码值就很好了。

 看一下 掩码0002的作用:

Original file mode --- rw- rw- rw-
Mask 000 000 000 010
Result --- rw- rw- r--

 看一下 掩码0022的作用:

Original file mode --- rw- rw- rw-
Mask 000 000 010 010
Result --- rw- r-- r--

一些特殊权限:

       一是 setuid 位(八进制4000)。当应用到一个可执行文件时,它把有效用户 ID 从真正的用户(实际运行程序的用户)设置成程序所有者的 ID。这种操作通常会应用到 一些由超级用户所拥有的程序。当一个普通用户运行一个程序,这个程序由根用户(root) 所有,并且设置了 setuid 位,这个程序运行时具有超级用户的特权,这样程序就可以 访问普通用户禁止访问的文件和目录。很明显,因为这会引起安全方面的问题,所有可以 设置 setuid 位的程序个数,必须控制在绝对小的范围内。

        第二个是 setgid 位(八进制2000),这个相似于 setuid 位,把有效用户组 ID 从真正的 用户组 ID 更改为文件所有者的组 ID。如果设置了一个目录的 setgid 位,则目录中新创建的文件 具有这个目录用户组的所有权,而不是文件创建者所属用户组的所有权。对于共享目录来说, 当一个普通用户组中的成员,需要访问共享目录中的所有文件,而不管文件所有者的主用户组时, 那么设置 setgid 位很有用处。

        第三个是 sticky 位(八进制1000)。这个继承于 Unix,在 Unix 中,它可能把一个可执行文件 标志为“不可交换的”。在 Linux 中,会忽略文件的 sticky 位,但是如果一个目录设置了 sticky 位, 那么它能阻止用户删除或重命名文件,除非用户是这个目录的所有者,或者是文件所有者,或是 超级用户。这个经常用来控制访问共享目录,比方说/tmp。

        例如:首先, 授予一个程序 setuid 权限。chmod u+s program

        下一步,授予一个目录 setgid 权限:chmod g+s dir

        最后,授予一个目录 sticky 权限:chmod +t dir

更改身份

       有三种方式:注销系统并以其他用户身份重新登录系统。使用 su 命令。使用 sudo 命令。

su - 以其他用户身份和组 ID 运行一个 shell

         这表明这个 shell 具有超级用户特权(提示符的末尾字符是”#”而不是”$”),并且当前工作目录是超级用户的家目录 (通常是/root)。一旦进入一个新的 shell,我们能执行超级用户所使用的命令。当工作完成后, 输入”exit”,则返回到原来的 shell:

        使用这种模式,命令传递到一个新 shell 中执行。把命令用单引号引起来很重要,因为我们不想 命令在我们的 shell 中展开,但需要在新 shell 中展开。

sudo - 以另一个用户身份执行命令

         sudo 命令不要求超级用户的密码。使用 sudo 命令时,用户使用他/她自己的密码 来认证。

         su 和 sudo 之间的一个重要区别是 sudo 不会重新启动一个 shell,也不会加载另一个 用户的 shell 运行环境。这意味者命令不必用单引号引起来。

chown - 更改文件所有者和用户组

         chown 命令被用来更改文件或目录的所有者和用户组。使用这个命令需要超级用户权限。

chown [owner][:[group]] file...

chown 命令可以更改文件所有者和/或文件用户组,依据于这个命令的第一个参数。

表10-6: chown 参数实例
参数 结果
bob 把文件所有者从当前属主更改为用户 bob。
bob:users 把文件所有者改为用户 bob,文件用户组改为用户组 users。
:admins 把文件用户组改为组 admins,文件所有者不变。
bob: 文件所有者改为用户 bob,文件用户组改为,用户 bob 登录系统时,所属的用户组。

chgrp - 更改用户组所有权

            在旧版 Unix 系统中,chown 命令只能更改文件所有权,而不是用户组所有权。为了达到目的, 使用一个独立的命令,chgrp 来完成。除了限制多一点之外,chgrp 命令与 chown 命令使用起来很相似。

更改用户密码

passwd [user]

3. 进程

  • ps – Report a snapshot of current processes   报告当前进程快照

  • top – Display tasks   显示任务

  • jobs – List active jobs   列出活跃的任务

  • bg – Place a job in the background    把一个任务放到后台执行

  • fg – Place a job in the foreground   把一个任务放到前台执行

  • kill – Send a signal to a process   给一个进程发送信号

  • killall – Kill processes by name   杀死指定名字的进程

  • shutdown – Shutdown or reboot the system   关机或重启系统

查看进程

         系统分配给每个进程一个数字,这个数字叫做 进程 ID 或 PID。PID 号按升序分配,init 进程的 PID 总是1。

 (1)

[me@linuxbox ~]$ ps
PID TTY           TIME CMD
5198 pts/1    00:00:00 bash

         默认情况下,ps 不会显示很多进程信息,只是列出与当前终端会话相关的进程。

        TTY 是 “Teletype” 的简写,是指进程的控制终端。TIME 字段表示 进程所消耗的 CPU 时间数量。

  (2)

[me@linuxbox ~]$ ps x
PID TTY   STAT   TIME COMMAND
2799 ?    Ssl    0:00 /usr/libexec/bonobo-activation-server –ac

        加上 “x” 选项(注意没有开头的 “-“ 字符) ,告诉 ps 命令,展示所有进程,不管它们由什么 终端(如果有的话)控制。
            STAT 是 “state” 的简写,它揭示了进程当前状态:
表11-1: 进程状态
状态 意义
R 运行。这意味着,进程正在运行或准备运行。
S 正在睡眠。 进程没有运行,而是,正在等待一个事件, 比如说,一个按键或者网络数据包。
D 不可中断睡眠。进程正在等待 I/O,比方说,一个磁盘驱动器的 I/O。
T 已停止. 已经指示进程停止运行。稍后介绍更多。
Z 一个死进程或“僵尸”进程。这是一个已经终止的子进程,但是它的父进程还没有清空它。 (父进程没有把子进程从进程表中删除)
< 一个高优先级进程。这可能会授予一个进程更多重要的资源,给它更多的 CPU 时间。 进程的这种属性叫做 niceness。具有高优先级的进程据说是不好的(less nice), 因为它占用了比较多的 CPU 时间,这样就给其它进程留下很少时间。
N 低优先级进程。 一个低优先级进程(一个“好”进程)只有当其它高优先级进程执行之后,才会得到处理器时间。
           (3) 选项组合 “aux”(不带开头的”-“字符)

[me@linuxbox ~]$ ps aux
USER   PID  %CPU  %MEM     VSZ    RSS  TTY   STAT   START   TIME  COMMAND
root     1   0.0   0.0    2136    644  ?     Ss     Mar05   0:31  init
            使用这个选项,可以唤醒 “BSD 风格” 的输出结果。 
表11-2: BSD 风格的 ps 命令列标题
标题 意思
USER 用户 ID. 进程的所有者。
%CPU 以百分比表示的 CPU 使用率
%MEM 以百分比表示的内存使用率
VSZ 虚拟内存大小
RSS 进程占用的物理内存的大小,以千字节为单位。
START 进程运行的起始时间。若超过24小时,则用天表示。

用 top 命令动态查看进程

          
[me@linuxbox ~]$ top
             top 程序连续显示系统进程更新的信息(默认情况下,每三分钟更新一次),top 显示结果由两部分组成: 最上面是系统概要,下面是进程列表,以 CPU 的使用率排序。

中断一个进程

[me@linuxbox ~]$ xlogo
[me@linuxbox ~]$
在一个终端中,输入 Ctrl-c,中断一个程序。 通过这个技巧,许多(但不是全部)命令行程序可以被中断。

把一个进程放置到后台(执行)

 
[me@linuxbox ~]$ xlogo &
[1] 28236
[me@linuxbox ~]$
        这条信息是 shell 特性的一部分,叫做 工作控制 。通过这条信息,shell 告诉我们,已经启动了 工作号 为1(“[1]”),PID 为28236的程序。

进程返回到前台

       一个在后台运行的进程对一切来自键盘的输入都免疫,也不能用 Ctrl-c 来中断它。
[me@linuxbox ~]$ jobs
[1]+ Running        xlogo &
[me@linuxbox ~]$ fg %1
fg 命令之后,跟随着一个百分号和工作序号(叫做 jobspec)。

停止一个进程

          有时候,我们想要停止一个进程,而没有终止它。这样会把一个前台进程移到后台等待。 输入 Ctrl-z ,可以停止一个前台进程。

停止一个进程

 
[me@linuxbox ~]$ xlogo &
[1] 28401
[me@linuxbox ~]$ kill 28401         #也可以用 jobspec(例如,“%1”)来代替 PID。
kill [-signal] PID...
         如果在命令行中没有指定信号,那么默认情况下,发送 TERM(终止)信号。
表 11-4: 常用信号
编号 名字 含义
1 HUP 挂起。这是美好往昔的痕迹,那时候终端机通过电话线和调制解调器连接到 远端的计算机。这个信号被用来告诉程序,控制的终端机已经“挂起”。 通过关闭一个终端会话,可以说明这个信号的作用。发送这个信号到终端机上的前台程序,程序会终止。

许多守护进程也使用这个信号,来重新初始化。这意味着,当发送这个信号到一个守护进程后, 这个进程会重新启动,并且重新读取它的配置文件。Apache 网络服务器守护进程就是一个例子。

2 INT 中断。实现和 Ctrl-c 一样的功能,由终端发送。通常,它会终止一个程序。
9 KILL 杀死。这个信号很特别。鉴于进程可能会选择不同的方式,来处理发送给它的 信号,其中也包含忽略信号,这样呢,从不发送 Kill 信号到目标进程。而是内核立即终止 这个进程。当一个进程以这种方式终止的时候,它没有机会去做些“清理”工作,或者是保存劳动成果。 因为这个原因,把 KILL 信号看作杀手锏,当其它终止信号失败后,再使用它。
15 TERM 终止。这是 kill 命令发送的默认信号。如果程序仍然“活着”,可以接受信号,那么 这个信号终止。
18 CONT 继续。在停止一段时间后,进程恢复运行。
19 STOP 停止。这个信号导致进程停止运行,而没有终止。像 KILL 信号,它不被 发送到目标进程,因此它不能被忽略。
表 11-5: 其它常用信号
编号 名字 含义
3 QUIT 退出
11 SEGV 段错误。如果一个程序非法使用内存,就会发送这个信号。也就是说, 程序试图写入内存,而这个内存空间是不允许此程序写入的。
20 TSTP 终端停止。当按下 Ctrl-z 组合键后,终端发送这个信号。不像 STOP 信号, TSTP 信号由目标进程接收,且可能被忽略。
28 WINCH 改变窗口大小。当改变窗口大小时,系统会发送这个信号。 一些程序,像 top 和 less 程序会响应这个信号,按照新窗口的尺寸,刷新显示的内容。

通过 killall 命令给多个进程发送信号

 
killall [-u user] [-signal] name...

更多和进程相关的命令

表11-6: 其它与进程相关的命令
命令名 命令描述
pstree 输出一个树型结构的进程列表,这个列表展示了进程间父/子关系。
vmstat 输出一个系统资源使用快照,包括内存,交换分区和磁盘 I/O。 为了看到连续的显示结果,则在命令名后加上延时的时间(以秒为单位)。例如,“vmstat 5”。 终止输出,按下 Ctrl-c 组合键。
xload 一个图形界面程序,可以画出系统负载的图形。
tload 与 xload 程序相似,但是在终端中画出图形。使用 Ctrl-c,来终止输出。












  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值