Linux文件系统

1.文件系统

1)super block:对应的是一个硬盘分区。即一个分区有一个super block。

inode:1个文件对应一个inode
Block:1个Block只能存放一个文件的内容

Linux文件系统_第1张图片

2.目录

理解什么是目录
目录的Block中的内容:
Linux文件系统_第2张图片
目录中存放的其实就是文件名对应的inode number,然后通过这个inode number,在inode table中可以找到对应的inode,由inode就可以知道磁盘上放该文件的Block在哪里。

比如有一个/etc/dir/text:
那么我们现在更目录/的data block中找到目录/etc的inode number,然后找到其inode,读取inode所指向的Block的内容,再在这个Block中找到/dir这个目录的inode number,然后找到其inode,读取inode所指向的Block的内容,最后在这个Block中找到文件text的inode,最后找到text的Data Block。

3.硬连接与软连接

hark link:多个文件名对应到同一个inode。hard link不能用于不同的文件系统,不可以用于连接目录。

symbol link:本质是一个文件,该文件的内容指向另一个文件名。
比如我有一个symbol link:mylink,那么ls -l mylink:
lrwxr-xr-x
即第一位l就表示这是一个symbol link文件,这样在指定这是一个软连接的文件之后,我们就会通过该文件的内容找到另一个文件。

4.杂记

想要指令多行,可以使用 \Enter,把Enter原本指向的意思替换掉。

1)echo:取用变量,如我一个变量var,那么要用echo $var获得它的值。
例如 myname=VBR,要在VBR后面在HJY,
则:myname=${myname}HJY。

2)程序:存放在磁盘上,处于某个目录中的可执行文件,在执行时,由exec函数将程序读入存储器,并使其执行。

3)文件空洞:文件中的空洞,不会占用磁盘空间,当用ls -l看该文件时,文件长度还是那么长,只是不会占用磁盘空间。

4)文件描述符与打开文件表
每个进程都有一个自己的文件表项,里面放了文件描述符以及该文件描述符所对应的打开文件表。这样每个进程都有它自己对该文件的当前偏移。

打开文件表:由内核维护,表示当前打开了哪些文件。
每个打开文件都有一个v节点,该v节点包含了文件类型和对此文件进行各种操作的函数的指针。

5)close(int fd):表示的关闭文件,即该进程自己的文件描述符会关闭掉。

6)int dup(int fd):复制一个fd所指向的文件描述符,返回复制后所得到的文件描述符。
int dup(int oldfd, int newfd):如果oldfd==newfd,返回newfd。否则,先关闭newfd,然后复制一个oldfd所指向的文件描述符,但是复制之后的那个文件描述符是newfd。

你可能感兴趣的:(Linux文件系统)