Linux 知识点

概览
文件系统原理
数据恢复原理
硬链接与软连接的区别
常用命令的使用
僵尸进程与孤儿进程的区别

概览

  1. 文件系统原理
  2. 数据恢复原理
  3. 硬链接与软连接的区别
  4. 常用命令的使用
  5. 僵尸进程与孤儿进程的区别,从 SIGCHLE 分析产生僵尸进程的区别

文件系统原理

1. 分区与文件系统

对分区进行格式化是为了在分区上建立文件系统。一个分区通常只能格式化为一个文件系统,但是磁盘阵列等技术可以将一个分区格式化为多个文件系统。

2. 组成

最主要的几个组成部分如下:

  • inode:一个文件占用一个 inode,记录文件的 属性,同时记录此文件的内容所在的 block 编号
  • block:记录文件的内容,文件太大时,会占用多个 block。

除此之外还包括:

  • superblock:记录文件系统的整体信息,包括 inode 和 block 的 总量使用量剩余量,以及 文件系统的格式与相关信息等;
  • block bitmap:记录 block 是否被使用的位域。

[外链图片转存失败(img-VqrQRS2j-1564908654190)(https://camo.githubusercontent.com/7f7cc25e134e2b4c8181a54b95f1bf97bb50950f/68747470733a2f2f67697465652e636f6d2f437943323031382f43532d4e6f7465732f7261772f6d61737465722f646f63732f706963732f4253445f6469736b2e706e67)]

3. 文件读取

对于 Ext2 文件系统,当要读取一个文件的内容时,先在 inode 中去查找文件内容所在的所有 block,然后把所有 block 的内容读出来。
[外链图片转存失败(img-tnBdV9GY-1564908654190)(https://camo.githubusercontent.com/dec77518a81cc0e1ea39904ae37afa2f3852d6a1/68747470733a2f2f67697465652e636f6d2f437943323031382f43532d4e6f7465732f7261772f6d61737465722f646f63732f706963732f38333138353331352d373933612d343533612d613932372d3565386439326235633065662e6a7067)]

而对于 FAT 文件系统,它没有 inode,每个 block 中存储着下一个 block 的编号。

4. inode

inode 具体包含以下信息:

  • 权限 (read/write/excute);
  • 拥有者与群组 (owner/group);
  • 容量;
  • 建立或状态改变的时间 (ctime);
  • 最近一次的读取时间 (atime);
  • 最近修改的时间 (mtime);
  • 定义文件特性的旗标 (flag),如 SetUID…
  • 该文件真正内容的指向 (pointer)。

inode 具有以下特点:

  • 每个 inode 大小均固定为 128 bytes (新的 ext4 与 xfs 可设定到 256 bytes);
  • 每个文件都仅会占用一个 inode。
5. 目录
  • 建立一个目录时,会分配一个 inode 与至少一个 block。block 记录的内容是目录下所有文件的 inode 编号 以及 文件名
  • 可以看出文件的 inode 本身不记录文件名,文件名记录在目录中,因此新增文件、删除文件、更改文件名这些操作与目录的 w 权限有关。


数据恢复原理

  • 如果突然断电,那么文件系统会发生错误,例如断电前只修改了 block bitmap,而还没有将数据真正写入 block 中。
  • ext3/ext4 文件系统引入了日志功能,可以利用日志来修复文件系统。
    • 文件系统中做了什么操作,操作系统就把它记录下来,比如创建一个新文件,操作系统会在日志文件中记录下来, 删除一个文件,操作系统也会在日志文件中记录下来,记录的信息包括文件名称、文件ionde信息等
    • 删除一个文件,操作系统会把这个文件的文件名和inode等信息写到日志文件中,然后把文件删除,并清空删除文件的原始inode数据指针,这个删除过程就完成了!我们可以发现,这个被删除的文件在临死之前,操作系统把它的文件名和inode信息记录了一份,这就给数据恢复留了一手


硬链接与软连接的区别

链接
# ln [-sf] source_filename dist_filename
-s :默认是 hard link,加 -s 为 symbolic link
-f :如果目标文件存在时,先删除目标文件

硬链接/实体链接

在目录下创建一个条目,记录着文件名与 inode 编号,这个 inode 就是源文件的 inode。
删除任意一个条目,文件还是存在,只要引用数量不为 0。
有以下限制:不能跨越文件系统、不能对目录进行链接。

软连接/符号链接

符号链接相当于Windows下的快捷方式。符号链接会产生的一个新的文件,但这个文件的作用就是专门指向某个文件的,当删除链接文件时,那就等于不需要这个链接,和原来的存在的实体原文件没有任何关系。但删除原来的文件,则相应的符号链接不可用。



常用命令的使用

1. cat
  • cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用

  • cat主要有三大功能:

    1. 一次显示整个文件:cat filename
    2. 从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
    3. 将几个文件合并为一个文件:cat file1 file2 > file
  • 参数

    • -b, --number-nonblank 对非空输出行编号
    • -n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
find
  1. 使用name选项: find / -name "*" -print
  2. 用perm选项:find . -perm 755 -print
  3. 忽略某个目录:
  4. 使用find查找文件的时候怎么避开某个文件目录:
  5. 使用user和nouser选项:find /etc -user peida -print find /home -nouser -print
  6. 使用group和nogroup选项:find /apps -group gem -print find / -nogroup-print
  7. 按照更改时间或访问时间等查找文件:查找更改时间在5日以内的文件 find / -mtime -5 -print 查找更改时间在3日以前的文件find /var/adm -mtime +3 -print
  8. 查找比某个文件新或旧的文件:
cut

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
参数:

  • -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
  • -c :以字符为单位进行分割。
  • -d :自定义分隔符,默认为制表符。
  • -f :与-d一起使用,指定显示哪个区域。
  • -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
    范围之内,该字符将被写出;否则,该字符将被排除
sort
grep

g/re/p(globally search a regular expression and print),使用正则表示式进行全局查找并打印。

$ grep [-acinv] [--color=auto] 搜寻字符串 filename
-c : 统计个数
-i : 忽略大小写
-n : 输出行号
-v : 反向选择,也就是显示出没有 搜寻字符串 内容的那一行
--color=auto :找到的关键字加颜色显示

示例:把含有 the 字符串的行提取出来(注意默认会有 --color=auto 选项,因此以下内容在 Linux 中有颜色显示 the 字符串)

$ grep -n 'the' regular_express.txt
8:I can't finish the test.
12:the symbol '*' is represented as start.
15:You are the best is mean you are the no. 1.
16:The world Happy is the same with "glad".
18:google is the best tools for search keyword
awk

awk 每次处理一行,处理的最小单位是字段,每个字段的命名方式为:$n,n 为字段号,从 1 开始,$0 表示一整行。
示例:取出最近五个登录用户的用户名和 IP

$ last -n 5
dmtsai pts/0 192.168.1.100 Tue Jul 14 17:32 still logged in
dmtsai pts/0 192.168.1.100 Thu Jul 9 23:36 - 02:58 (03:22)
dmtsai pts/0 192.168.1.100 Thu Jul 9 17:23 - 23:36 (06:12)
dmtsai pts/0 192.168.1.100 Thu Jul 9 08:02 - 08:17 (00:14)
dmtsai tty1 Fri May 29 11:55 - 12:11 (00:15)
$ last -n 5 | awk '{print $1 "\t" $3}'


僵尸进程与孤儿进程的区别

孤儿进程

一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。

孤儿进程将被 init 进程(进程号为 1)所收养,并由 init 进程对它们完成状态收集工作。

由于孤儿进程会被 init 进程收养,所以孤儿进程不会对系统造成危害。

僵尸进程

一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过 wait() 或 waitpid() 获取了子进程信息后才会释放。如果子进程退出,而父进程并没有调用 wait() 或 waitpid(),那么子进程的进程描述符仍然保存在系统中,这种进程称之为僵尸进程。

僵尸进程通过 ps 命令显示出来的状态为 Z(zombie)。

系统所能使用的进程号是有限的,如果产生大量僵尸进程,将因为没有可用的进程号而导致系统不能产生新的进程。

要消灭系统中大量的僵尸进程,只需要将其父进程杀死,此时僵尸进程就会变成孤儿进程,从而被 init 所收养,这样 init 就会释放所有的僵尸进程所占有的资源,从而结束僵尸进程。

##参考资料

  1. CyC2018 大佬的 Github
  2. 北京北亚数据恢复中心
  3. 51CTO 博客
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值