学习任务2:LPI-2 基本管理
Part3 过程控制
启动xeyes
Ctrl+C
会杀死进程,Ctrl+Z
会暂时停止进程
如果想继续运行,输入fg
或者bg
都能再次运行:
如果你想一开始就在背后运行,可以不用停止之后用bg,还有更方便的办法:直接在命令行后面加一个&
多个后台进程
列出所有存在的进程jobs -l
最左边的是job编号,作业2有个+表示是当前作业,还可以指定任务编号变成前台作业,fg 1会将红色xeyes变为前台任务,下一列是进程ID,或pid包含在列表中的
介绍一下信号
为了终止,停止或继续进程,Linux使用一种称为“信号”的特殊通信方式。通过向进程发送特定信号,可以使其终止,停止或执行其他操作。
使用“ -s”选项
,kill可以将任何信号发送到进程。当分别发送SIGINT,SIGSTOP或SIGCONT
信号时,Linux会杀死,停止或继续执行进程
默认情况下,kill发送SIGTERM
The big kill
进程可以忽略SIGTERM和SIGINT,是因为它们已停止或以某种方式“阻塞”。但是进程不能忽略SIGKILL:会使它从地球上直接消失
nohup
你开始作业的终端叫做作业控制终端,当你退出的时候shell将传递一个SIGHUP
给背景,为了保护这个进程不受影响,当你开始进程的时候请使用nohup
使用ps列出进程
查看系统上所有的进程:
还可以查看进程的不同信息,--forest选项
就能看到流程层次结构,各个进程之间的关系
也可以将“ u”或“ l”选项添加到“ a”和“ x”的任意组合中
ps au
ps al
top的使用
如果您发现自己连续运行ps了几次,并试图观察事物的变化,那么你可能想要的是top。 top显示持续更新的流程清单,以及一些有用的摘要信息
nice的使用
用来更改进程的优先级
优先序 (priority) 为操作系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
$ nice -n 10 oggenc /tmp/song.wav
renice的使用
改变一个运行中的进程的优先级
$ ps l 641
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
000 1000 641 1 9 0 5876 2808 do_sel S ? 2:14 sawfish
$ renice 10 641
641: old priority 0, new priority 10
$ ps l 641
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
000 1000 641 1 9 10 5876 2808 do_sel S ? 2:14 sawfish
Part4 文本处理
访问重定向
以前可以用>
输出到文件
$ echo "firstfile" > copyme
还有一个更有力的工具叫做pipes
管道可以利用,我们可以把内容输出作为另一个的输入,比如把hi there 作为wc的输入
wc呢是统计字数行数的,1表示一行,2表示俩单词,9表示字符数
管道示例
- ls -s通常会在终端上打印当前目录的列表,并在每个文件之前加上其大小,将输出通过管道传递到sort -n,从而对输出进行数字排序。这是在主目录中查找大文件的非常有用的方法!
- 解压管道
本来如果解压的话要这样:
$ bzip2 -d linux-2.4.16.tar.bz2
$ tar xvf linux-2.4.16.tar
可以使用管道产生相同的最终结果,而且不用中间文件夹:
$ bzip2 -dc linux-2.4.16.tar.bz2 | tar xvf -
- 长管道命令
首先呢,编辑了一些文字进去一共8行,有两行是一样的,sort会根据字母对文字排序,uniq会删除相同的行,所以最后显示行数为7
输入输出重定向
echo -e
如果要嵌入反斜杠转义序列,请使用该选项
常用文字处理命令
cat
显示
sort
按字母排序
uniq
删除重复行
wc
打印知道文件行数,字数,字节数
head
打印前10行 -n选项指定显示行数
tail
打印后10行 -n选项指定显示行数
tac
把cat倒过来写,也就是倒着一行行打印
cut
从输入文件或流的每一行中提取字符分隔的字段
nl
在输入的每一行中添加一个行号
pr
将文件分成多页输出;通常用于打印
tr
于将输入流中的某些字符映射到输出流中的某些其他字符。
- 例子:将文件testfile中的小写字母全部转换成大写字母,此时,可使用如下命令:
cat testfile |tr a-z A-Z
sed
功能强大的面向流的文本编辑器
- *例子:在第四行后添加新字符串 *
$ sed -e 4a\newline testfile
AWK
是一种处理文本文件的语言,是一个强大的文本分析工具
od
用于输出文件内容,读取文件内容后,以八进制形式呈现
例子:
split
用于将一个文件分割成数个。默认情况下将按照每1000行切割成一个小文件
fmt
用于编排文本文件
paste
合并文件的列
join
与粘贴类似,一起玩的意思嘛,两个文件有相同内容的连起来合并
例子:就是把有相同属性的列合并了,注意写的时候哪个文件写在前面就放在前面了
tee
把你输入的东西存到文件里了,一看嘿,file1和file2里东西都一样的
重定向<
有点迷,大概就是跟>
这个玩意儿差不多,方向相反
例子:键入单词apple,, cranberry和banana,后跟“ END”以表示输入的结尾。然后,sort程序按字母顺序返回了我们的单词
>>的使用
学习任务3:LPI-3 中级管理
系统和Internet文档,Linux权限模型,用户帐户管理和登录环境调整
Part1 系统和网络文档
Linux系统一般有三种文档来源:手册页,信息页,usr/share/doc与应用程序捆绑的文档。
手册页
可以查找任何命令,访问的时候输入man
+主题就行了,比如:man ls
手册中一般由以下一个部分组成:
NAME 命令的名称和单行描述
SYNOPSIS 如何使用命令
DESCRIPTION 关于命令功能的深入讨论
EXAMPLES 有关如何使用命令的建议
SEE ALSO 相关主题(通常是手册页)
man
的文档在这里(包含man1-8):
man1 用户程序
man2 系统调用
man3 库功能
man4 特殊文件
man5 档案格式
man6 游戏类
man7 杂
更详细的手册页
whatis-命令 可以看到更多主题的手册页
man printf
默认只显示第一节的页面,但是有时候我们更需要第三节里的库函数,就可以通过man 3 printf
来实现
man -k搜索手册页的NAME部分
apropos完全等价于man -k
这些手册页看起来都十分的不方便,没有超链接什么的可以跳转,开发人员增加了另一种格式:”信息页面“
输入info
之后,这些超链接都是可以点进去的,用光标来移动
还可以指定信息页面:
info diff
info info
(插一句)这些看的好无聊啊T-T
usr/share/doc
许多程序附带其他格式的其他文档:文本,PDF,PostScript,HTML等
查看/ usr / share / doc
,你会发现一长串目录,每个目录都与系统上的某个应用程序一起提供。搜索该文档通常可以发现一些手册页或信息页中未提供的功能,例如教程或其他技术文档。快速检查发现有很多阅读材料可用:
$ cd /usr/share/doc
$ find . -type f | wc -l
7582