✈️ 南邮迎新开始啦!
文章目录
- 一、进程管理
- 1.1 会话(Session) 和 screen 命令
- 1.2 进程组与作业
- 1.3 控制终端
- 1.4 守护进程
- 1.5 与进程相关的其他命令
- 1.5.1 pstree 命令
- 1.5.2 ps 命令
- 1.5.3 kill 命令
- 1.5.4 jobs 命令
- 1.5.5 bg 命令
- 1.5.6 fg 命令
- 二、Linux的备份与恢复
- 2.1 面向文件的备份与恢复
- 2.1.1 tar 命令
- 2.1.2 gzip 命令
- 2.1.3 bzip2 命令
- 2.1.4 cpio 命令
- 2.2 面向文件系统的备份与恢复
- 2.2.1 dump 命令
- 2.2.2 restore命令
- 2.3 面向设备的备份与恢复(dd 命令)
- 三、Linux应用软件包管理
- 3.1 应用软件包的分类
- 3.2 RPM 软件包的管理(rpm 命令选项)
- 四、输入输出重定向和管道
- 4.1 输入输出重定向(cat 命令)
- 4.2 管道
- 4.2.1 无名管道(cat 命令)
- 4.2.2 命名管道(mkfifo 命令 和 cat 命令)
- 五、元字符与正则表达式
- 5.1 元字符
- 5.1.1 通配符
- 5.1.2 屏蔽元字符
- 5.2 正则表达式(grep 命令)
- 六、参考附录:
Linux 入门之旅 ☁️
上一篇文章链接: 【Linux学习笔记①】——基础入门(上)⭐【Shell命令 目录和文件 用户和用户组 权限管理 】⭐
下一篇文章链接: …
一、进程管理
● 进程和程序的区别是什么?
答:程序是保存在磁盘可执行映像中的机器代码指令和数据的集合。进程是计算机程序的一次运行。
● 操作系统中进程的三种基本状态是什么?
① 就绪状态:进程已分配到除 CPU 以外的所有必要的资源,只要获得处理机便可立即执行。
② 执行状态:进程已获得处理机,其程序正在处理机上执行。
③ 阻塞状态:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件包括等待 I/O 完成、申请缓冲区不能满足、等待信件(信号)等。
● 当用户在某个终端上登录时,系统创建一个新的会话,以会话 ID 的形式记录在进程中。
● 会话开始于用户登录,结束于用户退出。
● 同一终端上派生的所有进程通常具有相同的会话 ID ,但不同终端上派生进程的会话 ID 不同。
● 一个会话中有一个领头进程和终端相连,负责从终端上接收输入。
● screen 命令:
■ 语法:screen [选项]
▶功能:用于统一管理多个会话,防止因为网络中断导致的 “掉线” 。
◆ 说明:
① 直接输入一个 “ screen” 即创建新会话。
② 输入 “Ctrl+A+D” 退出当前会话。
③ 重新进入该会话只需要执行 “screen –r ID号码“ 即可。
● 进程组:完成某种作业的相关进程。其以进程组 ID 的形式记录在进程中。
● 同组进程的进程组 ID 相同,属于不同组的进程拥有不同的进程组 ID 。
● 一个进程组至少包含一个进程,每个进程组中包含一个领头进程,领头进程的进程 ID 等于进程组 ID 。
● 一个终端会话可包含多个进程组(作业),根据进程运行方式的不同,可将进程分为前台进程和后台进程。
● 前台进程:当在 Shell 提示符下键入一命令并按回车时,Shell 将一直等待,直到命令执行结束,在此期间,用户不能在键盘上键入其他命令,以这种方式运行的进程称为前台进程,在一个会话中只能有一个前台进程组。
● 后台进程:在运行命令时,在命令的末尾加上 “&” 字符,使其运行在后台,用户可获得对终端的控制权,可在提示符下重新输入命令,以这种方式运行的进程称为后台进程,后台进程运行的优先级较低。
● 作业:前台进程和后台进程都称为作业。
● 当进程在前台运行时,从键盘上按下 Ctrl+z ,这样可使前台进程挂起。
● 作业有前台、后台和挂起三种状态。Shell 可使作业在这三种状态之间迁移。
● 当会话的领头进程打开一个终端之后,该终端就成为会话的控制终端。(控制终端就是展示在我们前面的 “黑框” 终端,受我们控制)
● 一个会话只能有一个控制终端,一个控制终端也只能控制一个会话。控制进程属于前台进程组,后台进程组不拥有控制终端。
● 守护进程是一种运行在后台的特殊进程,它摆脱了与控制终端的关系,当终端丢失或关闭,不会影响守护进程的正常运行。
● 守护进程通常周期性地运行在系统中,等待某种事件的发生,为用户提供某种服务。例如: ftp 服务和 Web 服务等,守护进程通常在系统开机时自动启动。
■ 语法:pstree [选项]
▶功能:显示系统中进程之间的继承关系。【注:init进程为所有进程的祖先】
■ 语法:ps [选项]
▶功能:显示系统中进程的状态和属性。
| 常用选项 | 含义 |
|---|---|
| -a | 显示终端上的所有进程,包括其他用户的进程 |
| -r | 只显示正在运行的进程 |
| -x | 显示没有控制终端的进程 |
| -u | 打印用户格式,显示有效用户名 |
| -l | 长列表方式 |
| -e | 显示所有进程 |
| -f | 全格式 |
| -j | 按作业格式输出 |
| … | … |
● 在使用 ps 命令时显示进程的运行状态时,显示的信息中涉及较多的字段名,下面是常用的字段名及其含义:
| 字段名 | 含义 |
|---|---|
| USER | 进程所有者 |
| PID | 进程ID |
| %CPU | CPU占用率 |
| %MEM | 内存占用率 |
| VSZ | 进程的内存映像所占的空间(虚拟内存占用空间) |
| RSS | 进程运行在用户空间中所占的物理字节大小(实际内存空间) |
| TTY | 进程执行所在的终端 |
| STAT | 进程的状态 |
| START | 进程开始运行时间 |
| TIME | 进程占有CPU的时间,以分和秒表示 |
| COMMAND | 启动命令的命令行 |
| … | … |
● 进程状态的字符表示为:
| 字段名 | 含义 |
|---|---|
| S | 可中断的睡眠状态(可信号唤醒) |
| D | 不可中断的睡眠状态(不可信号唤醒,等待资源,很少见) |
| R | 正在运行 |
| Z | 僵死状态, 进程已终止, 但进程描述符存在 |
| T | 停止状态 |
● 举个栗子:
■ 语法:kill [选项] 进程的PID
▶功能:将指定信号发送给指定的进程或进程组,如果没有指定信号,则发送 term 信号,用于结束进程。
| 常用选项 | 含义 |
|---|---|
| -l | 列出所有可用的信号名称 |
| -s | 指定发送的信号 |
| … | … |
● 进程的 PID 应该符合以下规则:
| 进程PID | 含义 |
|---|---|
| >0 | 将信号发送给进程标识为 PID 的进程 |
| =0 | 将信号发送给当前进程所在组的所有进程 |
| =-1 | 将信号发送给所有进程标识大于 1 的进程 |
| -n,且n>1 | 将信号发送给进程组标识为 n 的所有进程 |
| … | … |
● 举个栗子:
kill -l # 列出所有信号 kill -9 323 # 发送信号 9(KILL) 终止 PID 为 323 的进程 kill -9 -1223 # 杀死进程组号为 1223 中的所有进程 kill -TERM 0 # 发送信号 TERM 给当前进程组中的所有进程 kill -9 -1 # 发送信号 KILL 给所有进程标识大于 1 的进程
■ 语法:jobs
▶功能:列出当前的作业
■ 语法:bg 作业号
▶功能:把命令程序调到后台
■ 语法:fg 作业号
▶功能:把后台进程调入前台
二、Linux的备份与恢复
● 备份与恢复是一对互逆的数据处理技术,分成三个层次:
① 面向文件的备份与恢复
② 面向文件系统的备份与恢复
③ 面向设备的备份与恢复
● 面向文件的备份与恢复是以文件或目录作为基本的单位。不需考虑使用何种类型的文件系统或设备的方法。
● 归档:将多个文件或目录打包为一个目标文件的过程。该目标文件称为归档文件。这样,便于归档文件在网络上进行传输,便于对归档文件进行管理。
● 压缩:通过某种算法将一批数据以更小体积存储的一种技术。可减少归档文件在文件系统中占用的空间,也提高了传输效率。
■ 语法:tar [选项] 文件或目录
▶功能:将文件或目录归档至存储设备或文件,或将归档文件恢复至目录。
| 常用选项 | 含义 |
|---|---|
| -c | 建立新的归档文件 |
| -x | 从归档文件中解出文件 |
| -f | 对普通文件进行操作 |
| … | … |
● 为减少归档文件的体积,常配合使用压缩软件,对归档文件进行压缩,通常归档过程中使用的算法可通过归档文件的后缀名进行区分。
| 后缀名 | 含义 |
|---|---|
| .tar | 直接进行归档 tar cf |
| .gz | 使用 gzip 软件压缩 |
| .bz2 | 使用 bzip2 软件压缩 |
| .tar.gz | 归档后再用 gzip 软件压缩 |
| .tar.bz2 | 归档后再用 bzip2 软件压缩 |
■ 语法:gzip [选项] 文件名
▶功能:GNU的压缩程序。只对单个文件进行压缩。
| 常用选项 | 含义 |
|---|---|
| -c | 将压缩的资料输出到显示屏上 |
| -d | 解压缩 |
| -t | 检验一个压缩档的一致性 |
| … | … |
■ 语法:bzip2 [选项] 文件名称
▶功能:压缩与解压缩工具【注:tar 对文件或目录进行打包备份,生成 .tar 文档,gzip、bzip2 都是压缩程序。在 tar 命令中可以直接调用 gzip、bzip2。gzip 比 bzip2 快,但压缩率相对较低。】
| 常用选项 | 含义 |
|---|---|
| -c | 将压缩的资料输出到显示屏上 |
| -d | 解压缩 |
| -z | 压缩 |
| … | … |
■ 语法:cpio [选项] 归档文件或设备文件
▶功能:复制输入输出命令,将文件归档至设备或归档文件,或从设备或归档文件中还原文件。与 tar 格式兼容,支持许多老式磁带格式。
| 常用选项 | 含义 |
|---|---|
| − v -v −v | 版本模式 |
| − O -O −O | 创建归档文件 |
| − I -I −I | 恢复归档文件 |
| … | … |
● 面向文件系统的备份与恢复需要考虑文件系统的结构,与文件系统的类型有关,但与使用何种设备无关。
2.2.1 dump 命令 ■ 语法:dump [选项] 文件 文件系统或目录
▶功能:还原 dump 备份。
| 常用选项 | 含义 |
|---|---|
| − - −[0~9] | 备份的层级 |
| − f -f −f | 指定备份的设备或文件 |
| − u -u −u | 在系统中记录备份文件系统的层级和时间等信息 |
| … | … |
■ 语法:restore [选项] 文件
▶功能:备份文件系统。
| 常用选项 | 含义 |
|---|---|
| − f -f −f | 从指定设备或文件中还原备份的数据 |
| − i -i −i | 使用交互方式,在还原过程中向用户提出咨询 |
| − r -r −r | 进行还原操作 |
| … | … |
● 面向设备的备份是最低层次的备份形式,无论设备中的数据如何组织,都会将整个设备或分区拷贝至其它设备。当需要恢复时,只需重新复制即可,这种备份方式与设备所用的文件系统无关。
■ 语法:dd [选项]
▶功能:直接进行设备存取,用指定大小的块复制一个文件,并在拷贝的同时进行指定的转换。
| 常用选项 | 含义 |
|---|---|
| of=file | 输出到文件 file 中,而不是标准输出 |
| if=file | 输入文件 file, file 也不是标准输入 |
| bs=size | 设置 读/写 缓冲区的字节数 |
| … | … |
三、Linux应用软件包管理 3.1 应用软件包的分类
● 建立一个 Linux 系统除了 Linux 内核,还需要安装大量的应用软件。Linux 系统提供了软件软件包管理机制。软件包是由若干文件通过某种格式组织的文件,可借助工具对软件包进行自动安转、升级等。在 Linux 系统中,主要有两种类型的软件包:
① RPM(RedHat Package Management):由 Red Hat 公司推出的软件包管理器。
② APT(Advanced Package Tool):它是 Debian 软件包管理工具,很好地解决了软件包的依赖关系。APT软件包的命名规则与RPM相同,只是后缀名为 deb。
■ 语法:rpm [选项] 软件包名或文件名
▶功能:负责安装、升级、查询和卸载 RPM 软件包。
| 常用选项 | 含义 |
|---|---|
| − i -i −i | 安装软件包 |
| − q -q −q | 查询软件包 |
| − e -e −e | 卸载软件包 |
| − u -u −u | 升级软件包 |
| … | … |
● 应用软件包在 Linux 系统的安装位置遵从一定的规范,不同性质的文件所安装的位置不同。
| 文件类型 | 安装目录 |
|---|---|
| 普通执行程序文件 | /user/bin |
| 服务器执行程序文件和管理程序文件 | /usr/sbin |
| 应用程序配置文件 | /etc |
| 应用程序文档文件 | /usr/share/doc |
| 应用程序手册页文件 | /usr/share/man |
| … | … |
四、输入输出重定向和管道
● 每个在终端上运行的用户进程均由Shell创建,并从 Shell 处继承环境和资源等信息。
● 已打开的标准输入文件、标准输出文件和标准错误输出文件,简称标准输入、标准输出和标准错误输出,这些打开文件的 描述符 分别为 0、1 和 2 。
| 文件 | 文件描述符 | 默认设备 |
|---|---|---|
| 标准输入 | 0 | 键盘 |
| 标准输出 | 1 | 显示器 |
| 标准错误输出 | 2 | 显示器 |
● 输入重定向:将本应从标准输入设备接收的数据改变为从其他文件中输入的技术。
■ 语法:命令 <输入文件 或 命令 0<输入文件
▶功能:将键盘从标准输入中分离出来,并与输入文件关联,命令从输入文件中获取输入数据,而不是键盘。
"举例" cat
● 输出重定向:将本因从标准输出设备输出的数据改变输出至其他文件的技术。
■ 语法一:命令 n>输出文件
▶功能:将输出内容覆盖至重定向文件。■ 语法二:命令 n>>输出文件
▶功能:将输出内容追加至重定向文件。
| 数字 n | 含义 | 重定向符 | 含义 |
|---|---|---|---|
| 1 | 标准输出 | > | 将输出内容覆盖至重定向文件 |
| 2 | 标准错误输出 | >> | 将输出内容追加至重定向文件 |
| & | 标准输出和标准错误输出 |
● 管道是实现进程间通信的方法。
● 将一个进程的标准输出作为另一个进程的标准输入。
● 管道可分为无名管道和命名管道。
● 无名管道是在内存中建立文件描述,而不是在文件系统中建立 i 结点。在使用完无名管道后,内存中的文件描述符将被自动释放。
■ 语法: 命令1 | 命令2 | … [命令 n]
▶功能:将命令 1 的标准输出作为命令 2 的标准输入。接着将命令 2 的标准输出作为命令 3 的标准输入,依次类推。
● 命名管道通过在文件系统建立特殊的命名管道文件,用户通过对命名管道文件的读写,实现两个进程之间的通信。
● mkfifo 命令
■ 语法:mkfifo [选项] 文件名
▶功能:创建命名管道文件。【特点:一个读,一个写。内核协调,自动堵塞】
五、元字符与正则表达式 5.1 元字符
● 元字符用于表达某些特定而非自身含义的特殊字符,它定一种匹配字符的模式语言。
● 元字符的定义与语言环境有关,在不同的 Shell 版本以及一些文本处理程序中对元字符的定义不尽相同。
● Shell 元字符也称为通配符,经常出现在 Shell 命令中,用于通配文件和目录下表给出一些常用的元字符及其含义。
| 元字符 | 含义 |
|---|---|
| ? | 匹配任意一个字符 |
| * | 匹配任意数量的字符 |
| [abc] | 匹配方括号中的任意一个字符 |
| [a-z] | 匹配方括号中表示字符范围内的任意一个字符 |
| [!1-9] | 匹配除了方括号中表示范围内的字符 |
| … | … |
● 举一个栗子:
◆ 说明:
① 先创建 3 个 .txt 文件,分别命名如图所示。
② “
l
s
∗
.
t
x
t
lsquad *.txt
ls∗.txt ” → 找查后缀名为 txt 的所有文件
● 有时需要在命令中使用元字符本身,不希望元字符表示其特殊含义,有两种方法来处理:① 在包含元字符的字符串两边加单引号或双引号。② 在元字符前使用反斜杠 “”。
"举例" ls "ab*cd" ; 查找文件名为 "ab*cd" 的文件 ls abc*def ; 查找文件 "abc*def"
● 正则表达式是一个字符模板,用在文本处理程序中搜索匹配的字符。
● 这些文本处理程序包括 ed、ex、vi、grep、egrep、sed 和 awk 等。
■ 语法:grep [选项] 正则表达式 文本文件列表
▶功能:从文本文件中搜索匹配指定正则表达式的所有行。
| 元字符 | 含义 |
|---|---|
| ^ | 行首 |
| $ | 行尾 |
| char | 转义后面的字符 |
| … | … |
● 举个栗子:首先在这个 txt 文本文件中编辑 4 行代码。
然后使用 grep 命令:
六、参考附录:
[1] 《GNU/Linux编程》
人民邮电出版社
上一篇文章链接: 【Linux学习笔记①】——基础入门(上)⭐【Shell命令 目录和文件 用户和用户组 权限管理 】⭐.
下一篇文章链接: …
⭐️ ⭐️



