auto commit
@ -31,7 +31,7 @@
|
||||
* [文件属性](#文件属性)
|
||||
* [文件与目录的基本操作](#文件与目录的基本操作)
|
||||
* [修改权限](#修改权限)
|
||||
* [文件默认权限](#文件默认权限)
|
||||
* [默认权限](#默认权限)
|
||||
* [目录的权限](#目录的权限)
|
||||
* [链接](#链接)
|
||||
* [获取文件内容](#获取文件内容)
|
||||
@ -137,10 +137,8 @@ sudo 允许一般用户使用 root 可执行的命令,不过只有在 /etc/sud
|
||||
|
||||
RPM 和 DPKG 为最常见的两类软件包管理工具:
|
||||
|
||||
- RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统 (RHEL) 的既定软件标准。
|
||||
- 与 RPM 竞争的是基于 Debian 操作系统 (Ubuntu) 的 DEB 软件包管理工具 DPKG,全称为 Debian Package,功能方面与 RPM 相似。
|
||||
|
||||
YUM 基于 RPM,具有依赖管理和软件升级功能。
|
||||
- RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为许多 Linux 系统的既定软件标准。YUM 基于 RPM,具有依赖管理和软件升级功能。
|
||||
- 与 RPM 竞争的是基于 Debian 操作系统的 DEB 软件包管理工具 DPKG,全称为 Debian Package,功能方面与 RPM 相似。
|
||||
|
||||
## 发行版
|
||||
|
||||
@ -157,7 +155,7 @@ Linux 发行版是 Linux 内核及各种应用软件的集成版本。
|
||||
- 编辑模式(Insert mode):按下 "i" 等按键之后进入,可以对文本进行编辑;
|
||||
- 指令列模式(Bottom-line mode):按下 ":" 按键之后进入,用于保存退出等操作。
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/5942debd-fc00-477a-b390-7c5692cc8070.jpg" width="400"/> </div><br>
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/b5e9fa4d-78d3-4176-8273-756d970742c7.png" width="500"/> </div><br>
|
||||
|
||||
在指令列模式下,有以下命令用于离开或者保存文件。
|
||||
|
||||
@ -172,7 +170,7 @@ Linux 发行版是 Linux 内核及各种应用软件的集成版本。
|
||||
|
||||
## GNU
|
||||
|
||||
GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操作系统,称为 GNU,其内容软件完全以 GPL 方式发布。其中 GPL 全称为 GNU 通用公共许可协议,包含了以下内容:
|
||||
GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操作系统,称为 GNU,其内容软件完全以 GPL 方式发布。其中 GPL 全称为 GNU 通用公共许可协议(GNU General Public License),包含了以下内容:
|
||||
|
||||
- 以任何目的运行此程序的自由;
|
||||
- 再复制的自由;
|
||||
@ -195,13 +193,13 @@ IDE(ATA)全称 Advanced Technology Attachment,接口速度最大为 133MB/
|
||||
|
||||
### 2. SATA
|
||||
|
||||
SATA 全称 Serial ATA,也就是使用串口的 ATA 接口,抗干扰性强,且对数据线的长度要求比 ATA 低很多,支持热插拔等功能。SATA-II 的接口速度为 300MiB/s,而新的 SATA-III 标准可达到 600MiB/s 的传输速度。SATA 的数据线也比 ATA 的细得多,有利于机箱内的空气流通,整理线材也比较方便。
|
||||
SATA 全称 Serial ATA,也就是使用串口的 ATA 接口,抗干扰性强,且对数据线的长度要求比 ATA 低很多,支持热插拔等功能。SATA-II 的接口速度为 300MiB/s,而 SATA-III 标准可达到 600MiB/s 的传输速度。SATA 的数据线也比 ATA 的细得多,有利于机箱内的空气流通,整理线材也比较方便。
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/f9f2a16b-4843-44d1-9759-c745772e9bcf.jpg" width=""/> </div><br>
|
||||
|
||||
### 3. SCSI
|
||||
|
||||
SCSI 全称是 Small Computer System Interface(小型机系统接口),经历多代的发展,从早期的 SCSI-II 到目前的 Ultra320 SCSI 以及 Fiber-Channel(光纤通道),接口型式也多种多样。SCSI 硬盘广为工作站以及个人电脑以及服务器所使用,因此会使用较为先进的技术,如碟片转速 15000rpm 的高转速,且传输时 CPU 占用率较低,但是单价也比相同容量的 ATA 及 SATA 硬盘更加昂贵。
|
||||
SCSI 全称是 Small Computer System Interface(小型机系统接口),SCSI 硬盘广为工作站以及个人电脑以及服务器所使用,因此会使用较为先进的技术,如碟片转速 15000rpm 的高转速,且传输时 CPU 占用率较低,但是单价也比相同容量的 ATA 及 SATA 硬盘更加昂贵。
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/f0574025-c514-49f5-a591-6d6a71f271f7.jpg" width=""/> </div><br>
|
||||
|
||||
@ -236,7 +234,7 @@ Linux 也把分区当成文件,分区文件的命名方式为:磁盘文件
|
||||
|
||||
### 2. GPT
|
||||
|
||||
不同的磁盘有不同的扇区大小,例如 512 bytes 和最新磁盘的 4 k。GPT 为了兼容所有磁盘,在定义扇区上使用逻辑区块地址(Logical Block Address, LBA),LBA 默认大小为 512 bytes。
|
||||
扇区是磁盘的最小存储单位,旧磁盘的扇区大小通常为 512 bytes,而最新的磁盘支持 4 k。GPT 为了兼容所有磁盘,在定义扇区上使用逻辑区块地址(Logical Block Address, LBA),LBA 默认大小为 512 bytes。
|
||||
|
||||
GPT 第 1 个区块记录了主要开机记录(MBR),紧接着是 33 个区块记录分区信息,并把最后的 33 个区块用于对分区信息进行备份。这 33 个区块第一个为 GPT 表头纪录,这个部份纪录了分区表本身的位置与大小和备份分区的位置,同时放置了分区表的校验码 (CRC32),操作系统可以根据这个校验码来判断 GPT 是否正确。若有错误,可以使用备份分区进行恢复。
|
||||
|
||||
@ -284,19 +282,19 @@ BIOS 不可以读取 GPT 分区表,而 UEFI 可以。
|
||||
除此之外还包括:
|
||||
|
||||
- superblock:记录文件系统的整体信息,包括 inode 和 block 的总量、使用量、剩余量,以及文件系统的格式与相关信息等;
|
||||
- block bitmap:记录 block 是否被使用的位域。
|
||||
- block bitmap:记录 block 是否被使用的位图。
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/BSD_disk.png" width="800"/> </div><br>
|
||||
|
||||
## 文件读取
|
||||
|
||||
对于 Ext2 文件系统,当要读取一个文件的内容时,先在 inode 中去查找文件内容所在的所有 block,然后把所有 block 的内容读出来。
|
||||
对于 Ext2 文件系统,当要读取一个文件的内容时,先在 inode 中查找文件内容所在的所有 block,然后把所有 block 的内容读出来。
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/2f683fe8-bee8-46a9-86a7-685c8981555856191616.png"/> </div><br>
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/12a65cc6-20e0-4706-9fe6-3ba49413d7f6.png" width="500px"> </div><br>
|
||||
|
||||
而对于 FAT 文件系统,它没有 inode,每个 block 中存储着下一个 block 的编号。
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/f3131e98-8d20-4ff9-b14b-d6803691555844133783.png"/> </div><br>
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/5b718e86-7102-4bb6-8ca5-d1dd791530c5.png" width="500px"> </div><br>
|
||||
|
||||
## 磁盘碎片
|
||||
|
||||
@ -321,8 +319,8 @@ inode 具体包含以下信息:
|
||||
- 拥有者与群组 (owner/group);
|
||||
- 容量;
|
||||
- 建立或状态改变的时间 (ctime);
|
||||
- 最近一次的读取时间 (atime);
|
||||
- 最近修改的时间 (mtime);
|
||||
- 最近读取时间 (atime);
|
||||
- 最近修改时间 (mtime);
|
||||
- 定义文件特性的旗标 (flag),如 SetUID...;
|
||||
- 该文件真正内容的指向 (pointer)。
|
||||
|
||||
@ -331,7 +329,7 @@ inode 具有以下特点:
|
||||
- 每个 inode 大小均固定为 128 bytes (新的 ext4 与 xfs 可设定到 256 bytes);
|
||||
- 每个文件都仅会占用一个 inode。
|
||||
|
||||
inode 中记录了文件内容所在的 block 编号,但是每个 block 非常小,一个大文件随便都需要几十万的 block。而一个 inode 大小有限,无法直接引用这么多 block 编号。因此引入了间接、双间接、三间接引用。间接引用是指,让 inode 记录的引用 block 块记录引用信息。
|
||||
inode 中记录了文件内容所在的 block 编号,但是每个 block 非常小,一个大文件随便都需要几十万的 block。而一个 inode 大小有限,无法直接引用这么多 block 编号。因此引入了间接、双间接、三间接引用。间接引用让 inode 记录的引用 block 块记录引用信息。
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/inode_with_signatures.jpg" width="600"/> </div><br>
|
||||
|
||||
@ -339,7 +337,7 @@ inode 中记录了文件内容所在的 block 编号,但是每个 block 非常
|
||||
|
||||
建立一个目录时,会分配一个 inode 与至少一个 block。block 记录的内容是目录下所有文件的 inode 编号以及文件名。
|
||||
|
||||
可以看出文件的 inode 本身不记录文件名,文件名记录在目录中,因此新增文件、删除文件、更改文件名这些操作与目录的 w 权限有关。
|
||||
可以看到文件的 inode 本身不记录文件名,文件名记录在目录中,因此新增文件、删除文件、更改文件名这些操作与目录的写权限有关。
|
||||
|
||||
## 日志
|
||||
|
||||
@ -446,17 +444,15 @@ rmdir [-p] 目录名称
|
||||
|
||||
### 6. cp
|
||||
|
||||
复制文件。
|
||||
|
||||
如果源文件有两个以上,则目的文件一定要是目录才行。
|
||||
复制文件。如果源文件有两个以上,则目的文件一定要是目录才行。
|
||||
|
||||
```html
|
||||
cp [-adfilprsu] source destination
|
||||
-a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明
|
||||
-a :相当于 -dr --preserve=all
|
||||
-d :若来源文件为链接文件,则复制链接文件属性而非文件本身
|
||||
-i :若目标文件已经存在时,在覆盖前会先询问
|
||||
-p :连同文件的属性一起复制过去
|
||||
-r :递归持续复制
|
||||
-r :递归复制
|
||||
-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制
|
||||
--preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了
|
||||
```
|
||||
@ -513,12 +509,12 @@ cp [-adfilprsu] source destination
|
||||
# chmod a+w .bashrc
|
||||
```
|
||||
|
||||
## 文件默认权限
|
||||
## 默认权限
|
||||
|
||||
- 文件默认权限:文件默认没有可执行权限,因此为 666,也就是 -rw-rw-rw- 。
|
||||
- 目录默认权限:目录必须要能够进入,也就是必须拥有可执行权限,因此为 777 ,也就是 drwxrwxrwx。
|
||||
|
||||
可以通过 umask 设置或者查看文件的默认权限,通常以掩码的形式来表示,例如 002 表示其它用户的权限去除了一个 2 的权限,也就是写权限,因此建立新文件时默认的权限为 -rw-rw-r--。
|
||||
可以通过 umask 设置或者查看默认权限,通常以掩码的形式来表示,例如 002 表示其它用户的权限去除了一个 2 的权限,也就是写权限,因此建立新文件时默认的权限为 -rw-rw-r--。
|
||||
|
||||
## 目录的权限
|
||||
|
||||
@ -528,14 +524,15 @@ cp [-adfilprsu] source destination
|
||||
|
||||
## 链接
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/1e46fd03-0cda-4d60-9b1c-0c256edaf6b2.png" width="450px"> </div><br>
|
||||
|
||||
|
||||
```html
|
||||
# ln [-sf] source_filename dist_filename
|
||||
-s :默认是 hard link,加 -s 为 symbolic link
|
||||
-s :默认是实体链接,加 -s 为符号链接
|
||||
-f :如果目标文件存在时,先删除目标文件
|
||||
```
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/b8081c84-62c4-4019-b3ee-4bd0e443d647.jpg" width="400px"> </div><br>
|
||||
|
||||
### 1. 实体链接
|
||||
|
||||
在目录下创建一个条目,记录着文件名与 inode 编号,这个 inode 就是源文件的 inode。
|
||||
@ -557,7 +554,7 @@ cp [-adfilprsu] source destination
|
||||
|
||||
当源文件被删除了,链接文件就打不开了。
|
||||
|
||||
可以为目录建立链接。
|
||||
因为记录的是路径,所以可以为目录建立符号链接。
|
||||
|
||||
```html
|
||||
# ll -i /etc/crontab /root/crontab2
|
||||
@ -1108,7 +1105,7 @@ dmtsai lines: 5 columns: 9
|
||||
|
||||
### 1. ps
|
||||
|
||||
查看某个时间点的进程信息
|
||||
查看某个时间点的进程信息。
|
||||
|
||||
示例一:查看自己的进程
|
||||
|
||||
@ -1130,7 +1127,7 @@ dmtsai lines: 5 columns: 9
|
||||
|
||||
### 2. pstree
|
||||
|
||||
查看进程树
|
||||
查看进程树。
|
||||
|
||||
示例:查看所有进程树
|
||||
|
||||
@ -1140,7 +1137,7 @@ dmtsai lines: 5 columns: 9
|
||||
|
||||
### 3. top
|
||||
|
||||
实时显示进程信息
|
||||
实时显示进程信息。
|
||||
|
||||
示例:两秒钟刷新一次
|
||||
|
||||
@ -1162,13 +1159,14 @@ dmtsai lines: 5 columns: 9
|
||||
|
||||
| 状态 | 说明 |
|
||||
| :---: | --- |
|
||||
| R | running or runnable (on run queue) |
|
||||
| D | uninterruptible sleep (usually I/O) |
|
||||
| S | interruptible sleep (waiting for an event to complete) |
|
||||
| Z | zombie (terminated but not reaped by its parent) |
|
||||
| T | stopped (either by a job control signal or because it is being traced) |
|
||||
| R | running or runnable (on run queue)<br>正在执行或者可执行,此时进程位于执行队列中。|
|
||||
| D | uninterruptible sleep (usually I/O)<br>不可中断阻塞,通常为 IO 阻塞。 |
|
||||
| S | interruptible sleep (waiting for an event to complete) <br> 可中断阻塞,此时进程正在等待某个事件完成。|
|
||||
| Z | zombie (terminated but not reaped by its parent)<br>僵死,进程已经终止但是不可被其父进程获取信息。|
|
||||
| T | stopped (either by a job control signal or because it is being traced) <br> 结束,进程既可以被作业控制信号结束,也可能是正在被追踪。|
|
||||
<br>
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/76a49594323247f21c9b3a69945445ee.png" width=""/> </div><br>
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/2bab4127-3e7d-48cc-914e-436be859fb05.png" width="490px"/> </div><br>
|
||||
|
||||
## SIGCHLD
|
||||
|
||||
@ -1181,7 +1179,7 @@ dmtsai lines: 5 columns: 9
|
||||
|
||||
在子进程退出时,它的进程描述符不会立即释放,这是为了让父进程得到子进程信息,父进程通过 wait() 和 waitpid() 来获得一个已经退出的子进程的信息。
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/flow.png" width=""/> </div><br>
|
||||
<div align="center"> <!-- <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/flow.png" width=""/> --> </div><br>
|
||||
|
||||
## wait()
|
||||
|
||||
|
BIN
docs/pics/12a65cc6-20e0-4706-9fe6-3ba49413d7f6.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
docs/pics/1e46fd03-0cda-4d60-9b1c-0c256edaf6b2.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
docs/pics/2bab4127-3e7d-48cc-914e-436be859fb05.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
docs/pics/5b718e86-7102-4bb6-8ca5-d1dd791530c5.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
docs/pics/b5e9fa4d-78d3-4176-8273-756d970742c7.png
Normal file
After Width: | Height: | Size: 32 KiB |
@ -31,7 +31,7 @@
|
||||
* [文件属性](#文件属性)
|
||||
* [文件与目录的基本操作](#文件与目录的基本操作)
|
||||
* [修改权限](#修改权限)
|
||||
* [文件默认权限](#文件默认权限)
|
||||
* [默认权限](#默认权限)
|
||||
* [目录的权限](#目录的权限)
|
||||
* [链接](#链接)
|
||||
* [获取文件内容](#获取文件内容)
|
||||
@ -137,10 +137,8 @@ sudo 允许一般用户使用 root 可执行的命令,不过只有在 /etc/sud
|
||||
|
||||
RPM 和 DPKG 为最常见的两类软件包管理工具:
|
||||
|
||||
- RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统 (RHEL) 的既定软件标准。
|
||||
- 与 RPM 竞争的是基于 Debian 操作系统 (Ubuntu) 的 DEB 软件包管理工具 DPKG,全称为 Debian Package,功能方面与 RPM 相似。
|
||||
|
||||
YUM 基于 RPM,具有依赖管理和软件升级功能。
|
||||
- RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为许多 Linux 系统的既定软件标准。YUM 基于 RPM,具有依赖管理和软件升级功能。
|
||||
- 与 RPM 竞争的是基于 Debian 操作系统的 DEB 软件包管理工具 DPKG,全称为 Debian Package,功能方面与 RPM 相似。
|
||||
|
||||
## 发行版
|
||||
|
||||
@ -157,7 +155,7 @@ Linux 发行版是 Linux 内核及各种应用软件的集成版本。
|
||||
- 编辑模式(Insert mode):按下 "i" 等按键之后进入,可以对文本进行编辑;
|
||||
- 指令列模式(Bottom-line mode):按下 ":" 按键之后进入,用于保存退出等操作。
|
||||
|
||||
<div align="center"> <img src="pics/5942debd-fc00-477a-b390-7c5692cc8070.jpg" width="400"/> </div><br>
|
||||
<div align="center"> <img src="pics/b5e9fa4d-78d3-4176-8273-756d970742c7.png" width="500"/> </div><br>
|
||||
|
||||
在指令列模式下,有以下命令用于离开或者保存文件。
|
||||
|
||||
@ -172,7 +170,7 @@ Linux 发行版是 Linux 内核及各种应用软件的集成版本。
|
||||
|
||||
## GNU
|
||||
|
||||
GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操作系统,称为 GNU,其内容软件完全以 GPL 方式发布。其中 GPL 全称为 GNU 通用公共许可协议,包含了以下内容:
|
||||
GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操作系统,称为 GNU,其内容软件完全以 GPL 方式发布。其中 GPL 全称为 GNU 通用公共许可协议(GNU General Public License),包含了以下内容:
|
||||
|
||||
- 以任何目的运行此程序的自由;
|
||||
- 再复制的自由;
|
||||
@ -195,13 +193,13 @@ IDE(ATA)全称 Advanced Technology Attachment,接口速度最大为 133MB/
|
||||
|
||||
### 2. SATA
|
||||
|
||||
SATA 全称 Serial ATA,也就是使用串口的 ATA 接口,抗干扰性强,且对数据线的长度要求比 ATA 低很多,支持热插拔等功能。SATA-II 的接口速度为 300MiB/s,而新的 SATA-III 标准可达到 600MiB/s 的传输速度。SATA 的数据线也比 ATA 的细得多,有利于机箱内的空气流通,整理线材也比较方便。
|
||||
SATA 全称 Serial ATA,也就是使用串口的 ATA 接口,抗干扰性强,且对数据线的长度要求比 ATA 低很多,支持热插拔等功能。SATA-II 的接口速度为 300MiB/s,而 SATA-III 标准可达到 600MiB/s 的传输速度。SATA 的数据线也比 ATA 的细得多,有利于机箱内的空气流通,整理线材也比较方便。
|
||||
|
||||
<div align="center"> <img src="pics/f9f2a16b-4843-44d1-9759-c745772e9bcf.jpg" width=""/> </div><br>
|
||||
|
||||
### 3. SCSI
|
||||
|
||||
SCSI 全称是 Small Computer System Interface(小型机系统接口),经历多代的发展,从早期的 SCSI-II 到目前的 Ultra320 SCSI 以及 Fiber-Channel(光纤通道),接口型式也多种多样。SCSI 硬盘广为工作站以及个人电脑以及服务器所使用,因此会使用较为先进的技术,如碟片转速 15000rpm 的高转速,且传输时 CPU 占用率较低,但是单价也比相同容量的 ATA 及 SATA 硬盘更加昂贵。
|
||||
SCSI 全称是 Small Computer System Interface(小型机系统接口),SCSI 硬盘广为工作站以及个人电脑以及服务器所使用,因此会使用较为先进的技术,如碟片转速 15000rpm 的高转速,且传输时 CPU 占用率较低,但是单价也比相同容量的 ATA 及 SATA 硬盘更加昂贵。
|
||||
|
||||
<div align="center"> <img src="pics/f0574025-c514-49f5-a591-6d6a71f271f7.jpg" width=""/> </div><br>
|
||||
|
||||
@ -236,7 +234,7 @@ Linux 也把分区当成文件,分区文件的命名方式为:磁盘文件
|
||||
|
||||
### 2. GPT
|
||||
|
||||
不同的磁盘有不同的扇区大小,例如 512 bytes 和最新磁盘的 4 k。GPT 为了兼容所有磁盘,在定义扇区上使用逻辑区块地址(Logical Block Address, LBA),LBA 默认大小为 512 bytes。
|
||||
扇区是磁盘的最小存储单位,旧磁盘的扇区大小通常为 512 bytes,而最新的磁盘支持 4 k。GPT 为了兼容所有磁盘,在定义扇区上使用逻辑区块地址(Logical Block Address, LBA),LBA 默认大小为 512 bytes。
|
||||
|
||||
GPT 第 1 个区块记录了主要开机记录(MBR),紧接着是 33 个区块记录分区信息,并把最后的 33 个区块用于对分区信息进行备份。这 33 个区块第一个为 GPT 表头纪录,这个部份纪录了分区表本身的位置与大小和备份分区的位置,同时放置了分区表的校验码 (CRC32),操作系统可以根据这个校验码来判断 GPT 是否正确。若有错误,可以使用备份分区进行恢复。
|
||||
|
||||
@ -284,19 +282,19 @@ BIOS 不可以读取 GPT 分区表,而 UEFI 可以。
|
||||
除此之外还包括:
|
||||
|
||||
- superblock:记录文件系统的整体信息,包括 inode 和 block 的总量、使用量、剩余量,以及文件系统的格式与相关信息等;
|
||||
- block bitmap:记录 block 是否被使用的位域。
|
||||
- block bitmap:记录 block 是否被使用的位图。
|
||||
|
||||
<div align="center"> <img src="pics/BSD_disk.png" width="800"/> </div><br>
|
||||
|
||||
## 文件读取
|
||||
|
||||
对于 Ext2 文件系统,当要读取一个文件的内容时,先在 inode 中去查找文件内容所在的所有 block,然后把所有 block 的内容读出来。
|
||||
对于 Ext2 文件系统,当要读取一个文件的内容时,先在 inode 中查找文件内容所在的所有 block,然后把所有 block 的内容读出来。
|
||||
|
||||
<div align="center"> <img src="pics/2f683fe8-bee8-46a9-86a7-685c8981555856191616.png"/> </div><br>
|
||||
<div align="center"> <img src="pics/12a65cc6-20e0-4706-9fe6-3ba49413d7f6.png" width="500px"> </div><br>
|
||||
|
||||
而对于 FAT 文件系统,它没有 inode,每个 block 中存储着下一个 block 的编号。
|
||||
|
||||
<div align="center"> <img src="pics/f3131e98-8d20-4ff9-b14b-d6803691555844133783.png"/> </div><br>
|
||||
<div align="center"> <img src="pics/5b718e86-7102-4bb6-8ca5-d1dd791530c5.png" width="500px"> </div><br>
|
||||
|
||||
## 磁盘碎片
|
||||
|
||||
@ -321,8 +319,8 @@ inode 具体包含以下信息:
|
||||
- 拥有者与群组 (owner/group);
|
||||
- 容量;
|
||||
- 建立或状态改变的时间 (ctime);
|
||||
- 最近一次的读取时间 (atime);
|
||||
- 最近修改的时间 (mtime);
|
||||
- 最近读取时间 (atime);
|
||||
- 最近修改时间 (mtime);
|
||||
- 定义文件特性的旗标 (flag),如 SetUID...;
|
||||
- 该文件真正内容的指向 (pointer)。
|
||||
|
||||
@ -331,7 +329,7 @@ inode 具有以下特点:
|
||||
- 每个 inode 大小均固定为 128 bytes (新的 ext4 与 xfs 可设定到 256 bytes);
|
||||
- 每个文件都仅会占用一个 inode。
|
||||
|
||||
inode 中记录了文件内容所在的 block 编号,但是每个 block 非常小,一个大文件随便都需要几十万的 block。而一个 inode 大小有限,无法直接引用这么多 block 编号。因此引入了间接、双间接、三间接引用。间接引用是指,让 inode 记录的引用 block 块记录引用信息。
|
||||
inode 中记录了文件内容所在的 block 编号,但是每个 block 非常小,一个大文件随便都需要几十万的 block。而一个 inode 大小有限,无法直接引用这么多 block 编号。因此引入了间接、双间接、三间接引用。间接引用让 inode 记录的引用 block 块记录引用信息。
|
||||
|
||||
<div align="center"> <img src="pics/inode_with_signatures.jpg" width="600"/> </div><br>
|
||||
|
||||
@ -339,7 +337,7 @@ inode 中记录了文件内容所在的 block 编号,但是每个 block 非常
|
||||
|
||||
建立一个目录时,会分配一个 inode 与至少一个 block。block 记录的内容是目录下所有文件的 inode 编号以及文件名。
|
||||
|
||||
可以看出文件的 inode 本身不记录文件名,文件名记录在目录中,因此新增文件、删除文件、更改文件名这些操作与目录的 w 权限有关。
|
||||
可以看到文件的 inode 本身不记录文件名,文件名记录在目录中,因此新增文件、删除文件、更改文件名这些操作与目录的写权限有关。
|
||||
|
||||
## 日志
|
||||
|
||||
@ -446,17 +444,15 @@ rmdir [-p] 目录名称
|
||||
|
||||
### 6. cp
|
||||
|
||||
复制文件。
|
||||
|
||||
如果源文件有两个以上,则目的文件一定要是目录才行。
|
||||
复制文件。如果源文件有两个以上,则目的文件一定要是目录才行。
|
||||
|
||||
```html
|
||||
cp [-adfilprsu] source destination
|
||||
-a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明
|
||||
-a :相当于 -dr --preserve=all
|
||||
-d :若来源文件为链接文件,则复制链接文件属性而非文件本身
|
||||
-i :若目标文件已经存在时,在覆盖前会先询问
|
||||
-p :连同文件的属性一起复制过去
|
||||
-r :递归持续复制
|
||||
-r :递归复制
|
||||
-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制
|
||||
--preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了
|
||||
```
|
||||
@ -513,12 +509,12 @@ cp [-adfilprsu] source destination
|
||||
# chmod a+w .bashrc
|
||||
```
|
||||
|
||||
## 文件默认权限
|
||||
## 默认权限
|
||||
|
||||
- 文件默认权限:文件默认没有可执行权限,因此为 666,也就是 -rw-rw-rw- 。
|
||||
- 目录默认权限:目录必须要能够进入,也就是必须拥有可执行权限,因此为 777 ,也就是 drwxrwxrwx。
|
||||
|
||||
可以通过 umask 设置或者查看文件的默认权限,通常以掩码的形式来表示,例如 002 表示其它用户的权限去除了一个 2 的权限,也就是写权限,因此建立新文件时默认的权限为 -rw-rw-r--。
|
||||
可以通过 umask 设置或者查看默认权限,通常以掩码的形式来表示,例如 002 表示其它用户的权限去除了一个 2 的权限,也就是写权限,因此建立新文件时默认的权限为 -rw-rw-r--。
|
||||
|
||||
## 目录的权限
|
||||
|
||||
@ -528,14 +524,15 @@ cp [-adfilprsu] source destination
|
||||
|
||||
## 链接
|
||||
|
||||
<div align="center"> <img src="pics/1e46fd03-0cda-4d60-9b1c-0c256edaf6b2.png" width="450px"> </div><br>
|
||||
|
||||
|
||||
```html
|
||||
# ln [-sf] source_filename dist_filename
|
||||
-s :默认是 hard link,加 -s 为 symbolic link
|
||||
-s :默认是实体链接,加 -s 为符号链接
|
||||
-f :如果目标文件存在时,先删除目标文件
|
||||
```
|
||||
|
||||
<div align="center"> <img src="pics/b8081c84-62c4-4019-b3ee-4bd0e443d647.jpg" width="400px"> </div><br>
|
||||
|
||||
### 1. 实体链接
|
||||
|
||||
在目录下创建一个条目,记录着文件名与 inode 编号,这个 inode 就是源文件的 inode。
|
||||
@ -557,7 +554,7 @@ cp [-adfilprsu] source destination
|
||||
|
||||
当源文件被删除了,链接文件就打不开了。
|
||||
|
||||
可以为目录建立链接。
|
||||
因为记录的是路径,所以可以为目录建立符号链接。
|
||||
|
||||
```html
|
||||
# ll -i /etc/crontab /root/crontab2
|
||||
@ -1108,7 +1105,7 @@ dmtsai lines: 5 columns: 9
|
||||
|
||||
### 1. ps
|
||||
|
||||
查看某个时间点的进程信息
|
||||
查看某个时间点的进程信息。
|
||||
|
||||
示例一:查看自己的进程
|
||||
|
||||
@ -1130,7 +1127,7 @@ dmtsai lines: 5 columns: 9
|
||||
|
||||
### 2. pstree
|
||||
|
||||
查看进程树
|
||||
查看进程树。
|
||||
|
||||
示例:查看所有进程树
|
||||
|
||||
@ -1140,7 +1137,7 @@ dmtsai lines: 5 columns: 9
|
||||
|
||||
### 3. top
|
||||
|
||||
实时显示进程信息
|
||||
实时显示进程信息。
|
||||
|
||||
示例:两秒钟刷新一次
|
||||
|
||||
@ -1162,13 +1159,14 @@ dmtsai lines: 5 columns: 9
|
||||
|
||||
| 状态 | 说明 |
|
||||
| :---: | --- |
|
||||
| R | running or runnable (on run queue) |
|
||||
| D | uninterruptible sleep (usually I/O) |
|
||||
| S | interruptible sleep (waiting for an event to complete) |
|
||||
| Z | zombie (terminated but not reaped by its parent) |
|
||||
| T | stopped (either by a job control signal or because it is being traced) |
|
||||
| R | running or runnable (on run queue)<br>正在执行或者可执行,此时进程位于执行队列中。|
|
||||
| D | uninterruptible sleep (usually I/O)<br>不可中断阻塞,通常为 IO 阻塞。 |
|
||||
| S | interruptible sleep (waiting for an event to complete) <br> 可中断阻塞,此时进程正在等待某个事件完成。|
|
||||
| Z | zombie (terminated but not reaped by its parent)<br>僵死,进程已经终止但是不可被其父进程获取信息。|
|
||||
| T | stopped (either by a job control signal or because it is being traced) <br> 结束,进程既可以被作业控制信号结束,也可能是正在被追踪。|
|
||||
<br>
|
||||
<div align="center"> <img src="pics/76a49594323247f21c9b3a69945445ee.png" width=""/> </div><br>
|
||||
|
||||
<div align="center"> <img src="pics/2bab4127-3e7d-48cc-914e-436be859fb05.png" width="490px"/> </div><br>
|
||||
|
||||
## SIGCHLD
|
||||
|
||||
@ -1181,7 +1179,7 @@ dmtsai lines: 5 columns: 9
|
||||
|
||||
在子进程退出时,它的进程描述符不会立即释放,这是为了让父进程得到子进程信息,父进程通过 wait() 和 waitpid() 来获得一个已经退出的子进程的信息。
|
||||
|
||||
<div align="center"> <img src="pics/flow.png" width=""/> </div><br>
|
||||
<div align="center"> <!-- <img src="pics/flow.png" width=""/> --> </div><br>
|
||||
|
||||
## wait()
|
||||
|
||||
|
BIN
notes/pics/12a65cc6-20e0-4706-9fe6-3ba49413d7f6.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
notes/pics/1e46fd03-0cda-4d60-9b1c-0c256edaf6b2.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
notes/pics/2bab4127-3e7d-48cc-914e-436be859fb05.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
notes/pics/5b718e86-7102-4bb6-8ca5-d1dd791530c5.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
notes/pics/b5e9fa4d-78d3-4176-8273-756d970742c7.png
Normal file
After Width: | Height: | Size: 32 KiB |