Linux
-
linux系统分为内核、系统库、sheel、应用程序等部分
- 内核包含设备驱动程序、进程管理、内存管理、文件系统、网络协议栈等底层功能和组件
- 系统库是一种用于支持应用开发的软件库,包括C标准库,数学库等,方便我们基于这些接口开发应用程序
- shell是用户使用linux的接口,就像是内核的壳
-
vim命令
- 存在3种模式,命令模式,插入模式,尾行模式。命令模式输入:进入尾行模式,输入i进入插入模式。由插入模式/尾行模式进入命令模式输入esc。
- vim 文件名称,如果不存在则创建一个新的文件
- 两个常用的快捷键,^跳到行首,$跳到行尾。
- :set number 显示行号 set nonumber 不显示行号
- 在命令模式下,yy复制内容,p粘贴内容,dd删除内容。在命令前面加上数字,可以表示复制几行,粘贴几次,dd相当于win中的ctrl+x
- :50可以跳转文件的第50行。
- 用/向下查找,?向上查找。n表示下一个
- u:撤销上一个操作,相当于ctrl+z
-
链接文件
链接文件:
通过创建指针或引用,允许多个路径访问同一个文件和目录。
硬链接:
索引指向源文件的inode,inode中count值随着指向的硬链接++。它与原始文件共享同一个 inode(索引节点),也就是说,硬链接和原始文件在底层存储上是同一个文件的不同引用。
软链接:
新建一个link文件,link文件中保存指向源文件的地址,类似快捷方式。软链接就像是一个快捷方式,它指向原始文件或目录的位置,通过访问软链接可以间接访问到原始目标。
创建限制:
- 软链接:可以对任何文件或目录创建软链接,并且可以跨越不同的文件系统(如不同的分区或存储设备)进行创建。
- 硬链接:不能对目录创建硬链接(某些文件系统支持,但不常见且有风险),并且只能在同一文件系统内对文件创建硬链接。这是因为硬链接是通过 inode 编号来实现的,不同文件系统的 inode 编号不通用
指向关系:
- 软链接:软链接指向的是目标文件的路径,当目标文件被移动、重命名或删除后,软链接会失效,因为它所记录的路径不再指向有效的目标。
- 硬链接:硬链接直接指向文件的 inode,只要文件的 inode 存在且至少有一个硬链接指向它,文件就不会被真正删除。即使原始文件被删除,通过硬链接仍然可以访问到文件的内容。
删除操作:
- 软链接:删除软链接不会影响目标文件,只是删除了这个指向目标的 “快捷方式”。
- 硬链接:当删除原始文件时,实际上只是删除了文件的一个链接(目录项),只有当所有硬链接都被删除后,文件的数据才会被真正删除,占用的磁盘空间才会被释放。
使用场景
- 软链接
- 方便快捷访问:当需要频繁访问某个位于深层目录结构中的文件或目录时,可以在更方便的位置创建一个软链接,就像在桌面上创建一个指向某个应用程序安装目录中可执行文件的快捷方式一样,方便快速启动应用。
- 跨文件系统共享:在不同的文件系统之间共享文件或目录时,软链接非常有用。例如,在一个系统中,/home 目录位于一个分区,而 /opt 目录位于另一个分区,如果想在 /opt 目录下访问 /home/user/documents 目录中的文件,就可以创建一个软链接。
- 软件部署和更新:在软件部署过程中,经常会使用软链接来指向不同版本的软件目录。例如,有一个名为 “current” 的软链接指向当前正在使用的软件版本目录,当需要更新软件时,只需要将 “current” 软链接指向新的软件版本目录,而不需要改变其他引用该软件的路径,这样可以方便地实现软件的无缝更新。
- 硬链接
- 数据备份和恢复:硬链接可以作为一种简单的数据备份方式。创建硬链接不会占用额外的磁盘空间(除了目录项本身占用的少量空间),而且如果原始文件损坏或误删除,只要硬链接还存在,就可以通过硬链接恢复数据。
- 文件系统优化:在某些情况下,硬链接可以用于优化文件系统的性能。例如,当多个程序需要访问同一个文件时,可以通过硬链接让它们共享同一个文件的 inode,减少磁盘 I/O 和内存占用。
-
inode码
含义与作用
- 文件的唯一标识:inode 码是文件系统中每个文件和目录的唯一标识符。在文件系统创建时,系统会为每个文件和目录分配一个唯一的 inode 码,就如同每个人都有一个唯一的身份证号码一样。它与文件的名称无关,即使文件的名称被修改,其 inode 码也不会改变。
- 存储文件元数据:inode 中存储了文件的大量元数据信息,这些信息描述了文件的各种属性和特征,包括文件的类型(如普通文件、目录、链接文件等)、文件的权限(所有者权限、组权限、其他用户权限)、文件的大小、文件的创建时间、修改时间、访问时间、文件的数据块指针等。但不包含文件的名称和文件的内容,文件名称是存储在目录项中的。一个文件名只能有一个inode,多个inode可以有多个文件名指向。
工作原理
- 文件系统的查找过程:当用户或程序请求访问一个文件时,例如通过文件名来打开文件,文件系统首先会根据文件名所在的目录找到对应的目录项。目录项中包含了文件名和对应的 inode 码。然后,文件系统通过 inode 码找到相应的 inode,从 inode 中获取文件的元数据和数据块指针,进而根据数据块指针找到文件存储在磁盘上的数据块(block),从而读取或写入文件数据。
- 硬链接与 inode 码:硬链接的工作原理就是基于 inode 码。多个硬链接实际上是同一个 inode 的不同引用,它们共享相同的 inode 码和文件数据。当创建一个硬链接时,只是在文件系统的目录结构中增加了一个新的目录项,该目录项指向已存在文件的 inode。这样,通过不同的硬链接文件名访问文件时,最终都会通过相同的 inode 来访问文件数据。
查看方法
- 使用命令:在 Linux 系统中,可以使用多种命令来查看文件的 inode 码。例如,使用
ls -i命令可以列出当前目录下所有文件和目录的 inode 码。如果要查看某个特定文件的 inode 码,可以使用stat命令,如stat filename,在输出结果中可以找到文件的 inode 信息。
与文件系统的关系
- 空间分配与管理:文件系统在创建时会预留一定数量的 inode 和数据块空间。inode 的数量决定了文件系统中可以创建的文件和目录的最大数量,而数据块的大小和数量则决定了文件系统能够存储的数据量。当创建一个新文件时,文件系统会从空闲的 inode 中分配一个给新文件,并根据文件的大小分配相应的数据块来存储文件数据。
- 文件系统的完整性:inode 码对于维护文件系统的完整性至关重要。如果 inode 信息损坏或丢失,可能导致文件无法访问或文件系统出现错误。因此,文件系统通常会采取一些措施来保护 inode 的完整性,如定期进行文件系统检查和修复,以及使用日志式文件系统来记录对 inode 的更改,以便在系统崩溃或出现故障时能够恢复 inode 信息。

浙公网安备 33010602011771号