Linux 文件系统及目录功能介绍

Windows 和 Linux 文件系统的区别

在 windows 系统中,一切东西都是存放在硬盘上的。启动系统后,先确定硬盘,再确定硬盘上的分区以及每个分区所对应文件系统,最后是存放在某个分区特定的文件系统中的文件。例如 C、 D、E 盘,它们分别对应硬盘上的三个分区,增加硬盘,或者分区,会导致盘符的增加(注意由于历史原因, A,B 用于表示软驱,硬盘分区盘符从 C 开始按字母递增),这里的每个分区都各自可以被格式化为不同的文件系统(这里的文件系统,包括例如 NTFS 格式,FAT32 格式等),文件系统的基本功能就是为了存放文件的,不同文件系统区别一般在于管理其中存放的文件的功能的强弱,所以分区被格式化成指定格式的文件系统之后,就可以存放任何文件和目录了,我们看到的 C、D、 E 盘中的内容也就对应了硬盘中相应分区的数据内容。

在 Linux 系统中,Linux内核维护了一个虚拟的文件系统,这个虚拟文件系统是树状的结构以一个根目录 / 开始,在根目录下会有一级目录、二级目录等。启动系统后,先有这个虚拟文件系统,再识别出各个硬盘, 再把某个硬盘的某个分区挂载到这个虚拟文件系统的某个子树上(即分区用某个子目录来表示),再确定分区对应的子目录文件系统,最后的文件就存放在这个特定的文件系统中。如果想要使用某个硬盘的某个分区,就把那个分区挂载到某个子目录之下,这样硬盘中的分区,文件系统,目录等内容就呈现到了那个子目录里面。也就是说,在 Linux 中,我们使用硬盘中的数据,实际是先把硬盘的某个分区挂载到某个子目录下,然后通过那个子目录来访问的。

df 命令用于显示磁盘的使用情况

[root@node001 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        97G  2.3G   90G   3% /
tmpfs           491M     0  491M   0% /dev/shm
/dev/sda1       194M   28M  157M  15% /boot

在 Linux 系统中,硬盘会对应虚拟文件系统中的 /dev/sda(如有多个硬盘,则为 /dev/sda,/dev/sdb, 按字母递增),其三个分区对应 /dev/sda1,/dev/sda2,/dev/sda3(多个分区按数字递增,不同硬盘的分区,对应为 /dev/sdb1,/dev/sdb2 等),在 /etc/fstab 文件中,我们可以找到分区文件和挂载点的对应关系描述。这样,硬盘相应的分区就做为整个虚拟文件系统根目录下的一颗子树,反映到了子目录(挂载点)上,子目录中的内容就对应分区中的数据。
这样做的好处就是:解耦了 人、程序、物理存储

Linux 目录功能介绍

首先进入根目录 # cd /

[root@node001 /]# ll
total 90
dr-xr-xr-x.  2 root root  4096 Aug 11 19:19 bin
dr-xr-xr-x.  5 root root  1024 Aug  7 07:24 boot
drwxr-xr-x. 18 root root  3680 Oct 25 04:12 dev
drwxr-xr-x. 76 root root  4096 Oct 25 04:12 etc
drwxr-xr-x.  5 root root  4096 Oct  7 20:54 home
dr-xr-xr-x.  8 root root  4096 Aug 10 18:17 lib
dr-xr-xr-x. 10 root root 12288 Aug 11 19:21 lib64
drwx------.  2 root root 16384 Aug  7 07:19 lost+found
drwxr-xr-x.  2 root root  4096 Sep 23  2011 media
drwxr-xr-x.  2 root root  4096 Sep 23  2011 mnt
drwxr-xr-x.  4 root root  4096 Aug 16 04:32 opt
dr-xr-xr-x. 85 root root     0 Oct 25 04:12 proc
dr-xr-x---.  7 root root  4096 Oct  8 21:36 root
dr-xr-xr-x.  2 root root 12288 Oct 25 07:38 sbin
drwxr-xr-x.  7 root root     0 Oct 25 04:12 selinux
drwxr-xr-x.  2 root root  4096 Sep 23  2011 srv
drwxr-xr-x. 13 root root     0 Oct 25 04:12 sys
drwxrwxrwt. 10 root root  4096 Oct 25 05:25 tmp
drwxr-xr-x. 14 root root  4096 Aug 10 19:39 usr
drwxr-xr-x. 18 root root  4096 Aug 16 05:35 var
  • /boot 引导程序,内核等存放的目录

    这个目录,包括了在引导过程中所必需的文件,引导程序的相关文件(例如 grub ,lilo 以及相应的配置文件)以及 Linux 操作系统内核相关文件(例如 vmlinuz 等)一般都存放在这里。在最开始的启动阶段,通过引导程序将内核加载到内存,完成内核的启动(这个时候, 虚拟文件系统还不存在,加载的内核虽然是从硬盘读取的,但是没经过 Linux 的 虚拟文件系统,这是比较底层的东西来实现的)。然后内核自己创建好虚拟文件系统,并且从虚拟文件系统的其他子目录中(例如 /sbin/etc)加载需要在开机启动的其他程序或者服务或者特定的动作(部分可以由用户自己在相应的目录中修改相应的文件来配制)。

  • /sbin 一般存放用于系统管理的“必需”的程序(二进制文件),一般普通用户不会使用,超级用户使用

    存放大多涉及系统管理的命令(例如引导系统的 init 程序),是超级权限用户 root 的可执行命令存放地,普通用户无权限执行这个目录下的命令(但是有时普通用户也可能会用到)。这个目录和 /usr/sbin 或 /usr/local/sbin 等目录是相似的,我们要记住,凡是目录 sbin 中包含的都是 root 权限才能执行的,这样就行了。后面会具体区分。

  • /bin 一般存放对于用户和系统来说“必须”的程序(二进制文件)

    系统所需要的那些命令位于此目录,比如 ls 、 cp 、 mkdir 等命令;类似的目录还有 /usr/bin , /usr/local/bin等等。这个目录中的文件都是可执行的、普通用户都可以使用的命令。

  • /lib 和 /lib64 一般存放对于用户和系统来说“必须”的库(二进制文件)

    此目录下包含系统引导和在根用户执行命令时候所必需用到的共享库。

  • /dev 设备文件目录

    在 Linux 中设备都是以文件形式出现,这里的设备可以是硬盘、键盘、鼠标、网卡、终端等设备,通过访问这些文件可以访问到相应的设备。设备文件可以使用 mknod 命令来创建,具体参见相应的命令;而为了将对这些设备文件的访问转化为对设备的访问,需要向相应的设备提供设备驱动模块(一般将设备驱动编译之后,生成的结果是一个 *.ko 类型的二进制文件),在内核启动之后,再通过 insmod 等命令加载相应的设备驱动之后,我们就可以通过设备文件来访问设备了。一般来说,想要 Linux 系统支持某个设备,只需要三个东西:相应的硬件设备,支持硬件的驱动模块,以及相应的设备文件。

  • /home 普通用户的家目录

    在 Linux 机器上,用户主目录通常直接或间接地放置在此目录下。其结构通常由本地机的管理员来决定。通常而言,系统的每个用户都有自己的家目录,目录以用户名作为名字存放在 /home 下面(例如 quietheart 用户,其家目录的名字为 /home/quietheart )。该目录中保存了绝大多数的用户文件(用户自己的配置文件,定制文件,文档,数据等)。由于这个目录包含了用户实际的数据,通常系统管理员为这个目录单独挂载一个独立的磁盘分区,这样这个目录的文件系统格式就可能和其他目录不一样了(尽管表面上看,这个目录还是属于根目录的一棵子树上),将系统文件和数据文件分开存放,有利于维护。

  • /root 超级用户 root 的家目录

    系统管理员(就是 root 用户或超级用户)的主目录

  • /etc 全局的配置文件存放目录

    系统和程序一般都可以通过修改相应的配置文件,来进行配置。例如,要配置系统开机的时候启动那些程序,配置某个程序启动的时候显示什么样的风格等等。通常这些配置文件都集中存放在 /etc 目录中,所以想要配置什么东西的话,可以在 /etc 下面寻找我们可能需要修改的文件。一些大型套件,如 X11 ,在 /etc 下有它们自己的子目录。系统配置文件可以放在这里或在 /usr/etc 。 不过所有程序总是在 /etc 目录下查找所需的配置文件,你也可以将这些文件链接到目录 /usr/etc 。另外,还一个需要注意的常见现象就是,当某个程序在某个用户下运行的时候,可能会在该用户的家目录中生成一个配置文件(一般这个文件最开始就是 /etc 下相应配置文件的拷贝,存放相应于“当前用户”的配置),这样当前用户可以通过配置这个家目录的配置文件,来改变程序的行为,并且这个行为只是该用户特有的。原因就是:一般来说一个程序启动,如果需要读取一些配置文件的话,它会首先读取当前用户家目录的配置文件,如果存在就使用;如果不存在它就到 /etc 下读取全局的配置文件进而启动程序。就是这个配置文件不自动生成,我们手动在自己的家目录中创建一个文件的话,也有许多程序会首先读取到这个家目录的文件并且以它的配置作为启动的选项(例如我们可以在家目录中创建 vim 程序的配置文件 .vimrc ,来配置自己的 vim 程序)。

  • /usr 这个目录中包含了命令库文件和在通常操作中不会修改的文件

    这个目录对于系统来说也是一个非常重要的目录,其地位类似 Windows 上面的 Program Files 目录(请原谅我可能这样做比较不太恰当 ^_^)。安装程序的时候,默认就是安装在此文件内部某个子文件夹内。输入命令后系统默认执行 /usr/bin 下的程序(当然,前提是这个目录的路径已经被添加到了系统的环境变量中)。

  • /proc 特殊文件目录( kernel 内核映射)

    这个目录采用一种特殊的文件系统格式( proc 格式),内核支持这种格式。其中包含了全部虚拟文件。它们并不保存在磁盘中,也不占据磁盘空间。当您查看它们时,您实际上看到的是内存里的信息,这些文件助于我们了解系统内部信息。在关机状态下该目录为空。

  • /opt 可择的文件目录

    这个目录表示的是可择的意思,某些自定义软件包或者第三方工具,就可以安装在这里。比如在 Fedora Core 5.0 中,OpenOffice 就是安装在这里。一些我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件,可以把它们的安装路径设置成 /opt 这样来安装。

  • /mnt 临时挂载目录

    这个目录一般是用于存放挂载储存设备的挂载目录的,比如磁盘、光驱、网络文件系统等,当我们需要挂载某个磁盘设备的时候,可以把磁盘设备挂载到这个目录上去,这样我们可以直接通过访问这个目录来访问那个磁盘了。一般来说,我们最好在 /mnt 目录下面多建立几个子目录,挂载的时候挂载到这些子目录上面

  • /media 挂载的媒体设备目录

    挂载的媒体设备目录,一般外部设备挂载到这里,例如 cdrom 等。比如我们插入一个U盘,我们一般会发现, Linux 自动在这个目录下建立一个 disk 目录,然后把U盘挂载到这个 disk 目录上,通过访问这个 disk 来访问U盘。

  • /var 存放数据的目录

    此目录下文件的大小可能会改变,如缓冲文件、日志文件、缓存文件等一般都存放在这里。

  • /tmp 临时文件目录

    该目录存放系统中的一些临时文件,文件可能会被系统自动清空。


文件类型

使用命令 # ls -l 查看文件的基本属性的时候,每一行的第一位,也就是权限位之前的那一位表示文件的类型

-:代表普通文件
d:目录文件
b:块设备文件(block)
c:字符设备文件(character)
l:链接文件(软连接)
p:管道文件(pipe)
s:套接字文件(socket)


文件权限

权限位共九位,每三位为一组,共三组

r 读权限 数值表示 4
w 写权限 数值表示 2
x 执行权限 数值表示 1

第一组 第二组 第三组
u 代表属主 g 代表属组 o 代表其它用户
前三位 中间三位 后三位
文件持有者 文件持有组 除了 u 和 g 以外的用户

例如:

[root@node001 etc]# ll /etc/profile
-rw-r--r--. 1 root root 2011 Sep 13 17:39 /etc/profile

前三位 rw- 表示 u 的权限是读、写
中间三位 r– 表示 g 的权限是只读
后三位 r– 表示 o 的权限是只读
1 表示文件硬链接的数量
root 表示持有者(owner)
root 表示持有组(group)
2011 表示文件大小,单位字节
Sep 13 17:39 表示修改日期
profile 表示文件名

发布了42 篇原创文章 · 获赞 11 · 访问量 3840

猜你喜欢

转载自blog.csdn.net/weixin_44584387/article/details/88391669
今日推荐