linux-复习随记

"linux"

Posted by yangsir on April 17, 2024

“linux复习随记”

简述Linux删除文件的原理

在Linux系统中,删除文件的原理主要涉及到文件系统的操作和文件权限的检查。以下是删除文件的基本步骤和原理:

  1. 权限检查: 在删除文件之前,系统会首先检查执行删除操作的用户是否具有足够的权限。这包括检查用户是否拥有文件的写权限,以及用户是否是文件的所有者或者具有足够的权限(如root用户)。

  2. 文件系统操作: 如果权限检查通过,系统会开始执行文件系统层面的操作。这通常涉及到以下几个步骤:

    • 删除文件的inode信息: 每个文件在文件系统中都有一个对应的inode(索引节点),它包含了文件的元数据,如文件类型、权限、所有者、大小、时间戳以及指向文件数据块的指针。删除文件时,系统会更新文件系统的inode表,将该文件的inode标记为未使用状态,这样就不会再有文件引用这个inode。

    • 释放数据块: 文件的数据存储在文件系统中的数据块中。当文件的inode被标记为未使用后,系统会释放这些数据块,使得它们可以被新的文件使用。这个过程可能不会立即发生,而是由文件系统的后台进程(如bdflushkupdated)在适当的时候进行。

    • 更新目录结构: 文件通常存储在目录中,目录实际上也是一个特殊的文件,它包含了文件名和对应inode号的映射关系。删除文件时,系统会更新包含该文件的目录文件,移除文件名和inode号的关联条目。

  3. 实际删除操作: 用户通常使用rm命令来删除文件。rm命令会调用系统调用(如unlink())来执行上述文件系统操作。在底层,unlink()系统调用会执行权限检查和文件系统操作,最终完成文件的删除。

  4. 回收站机制: 有些Linux桌面环境提供了回收站机制,类似于Windows的回收站。在这种情况下,删除的文件并不会立即从文件系统中移除,而是被移动到回收站目录中,用户可以在一定时间内恢复这些文件。

需要注意的是,删除文件是一个不可逆的操作,一旦文件的数据块被重新分配给其他文件,原始文件的数据就无法恢复了。因此,在执行删除操作时应当谨慎。

简述文件软硬链接的区别

在Linux系统中,文件链接分为软链接(符号链接,Symbolic Link)和硬链接(Hard Link)两种。它们在软硬件方面的区别主要体现在文件系统层次和文件的逻辑结构上。

硬件层面

  • 硬链接在文件系统中创建了一个新的目录条目,指向同一个inode。
  • 硬链接不涉及额外的数据块,因为它只是inode的一个额外引用。

软件层面

  • 硬链接创建了一个新的文件名,但这个文件名指向的inode与原文件相同。
  • 硬链接与原文件共享相同的数据块和inode信息。
  • 删除原文件并不会影响硬链接文件,因为只要还有至少一个链接指向inode,文件数据就不会被删除。
  • 硬链接不能跨越不同的文件系统,因为inode是特定于单个文件系统的。
  • 硬链接不能指向目录,只能指向文件。

硬件层面

  • 软链接在文件系统中创建了一个新的inode,这个inode指向一个包含目标文件路径的字符串。
  • 软链接需要额外的数据块来存储目标文件的路径信息。

软件层面

  • 软链接创建了一个新的文件,这个文件的内容是目标文件的路径。
  • 软链接与原文件有不同的inode,因此它们是两个独立的文件。
  • 删除原文件后,软链接会失效,因为它指向的路径不再存在。
  • 软链接可以跨越不同的文件系统,因为它存储的是路径而不是inode。
  • 软链接可以指向文件或目录。

总结

  • 硬链接:在硬件层面,硬链接不占用额外的存储空间,因为它只是inode的一个额外引用。在软件层面,硬链接与原文件共享数据和inode,删除原文件不影响硬链接文件的存在。
  • 软链接:在硬件层面,软链接需要额外的存储空间来存储目标文件的路径。在软件层面,软链接是一个独立的文件,包含目标文件的路径信息,删除原文件会导致软链接失效。

简述linux系统的启动流程

BIOS自检

计算机开机后,首先执行的是BIOS自检,这个阶段会检查硬件设备是否正常,如内存、硬盘等

MBR加载

当BIOS找到一个包含MBR的设备,它会读取MBR的内容。

GRUB菜单

对于 Linux 操作系统来说,GRUB (GRand Unified Bootloader. 统一启动加载器) 是使用最为广泛的多系统引导器程序。系统控制权传递给 GRUB 以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载 Linux 内核文件,然后将系统控制权转交给内核。需要注意的是,CentOS 7 采用的是 GRUB2 启动引导器.

加载Linux内核文件

Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过程。在Cent0S 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.e17.x86 64”。

linux不代表系统,是一个内核

init进程初始化

为了完成进一步的系统引导过程,Linux 内核首先将系统中的/sbin/init 程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成系列的系统初始化过程、 最后等 待用户进行登录。系统中第一个启动的进程。