FHS文件系统各目录功能

FHS文件系统各目录功能

摘要:

本文主要介绍Linux的文件组织目录结构。

一、Linux 目录结构

在讲 Linux 目录结构之前,你首先要清楚一点东西,那就是 Linux 的目录与 Windows 的目录的区别,或许对于一般操作上的感受来说没有多大不同,但从它们的实现机制来说是完全不同的。

一种不同是体现在目录与存储介质(磁盘,内存,DVD 等)的关系上,以往的 Windows 一直是以存储介质为主的,主要以盘符(C 盘,D 盘…)及分区的来实现文件管理,然后之下才是目录,目录就显得不是那么重要,除系统文件之外的用户文件放在任何地方任何目录也是没有多大关系。所以通常 Windows 在使用一段时间后,磁盘上面的文件目录会显得杂乱无章(少数善于整理的用户除外吧)。然而 UNIX/Linux 恰好相反,UNIX 是以目录为主的,Linux 也继承了这一优良特性。 Linux 是以树形目录结构的形式来构建整个系统的,可以理解为一个用户可操作系统的骨架。虽然本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说 Linux 的磁盘是“挂在”(挂载在)目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统。举例来说,可以利用网络文件系统(Network File System,NFS)服务器载入某特定目录等。

1.FHS 标准

Linux 的目录结构说复杂很复杂,说简单也很简单。复杂在于,因为系统的正常运行是以目录结构为基础的,对于初学者来说里面大部分目录都不知道其作用,重要与否,特别对于哪些曾近的重度 Windows 用户,他们会纠结很长时间,关于我安装的软件在哪里这类问题。说它简单是因为,它其中大部分目录结构是规定好了(FHS 标准),是死的,当你掌握后,你在里面的一切操作都会变得井然有序。

FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。

FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该要放置设置文件,/bin 与 /sbin 则应该要放置可执行文件等等。

第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统登录文件、/usr/share 放置共享数据等等。

可分享的(shareable)

不可分享的(unshareable)

不变的(static)

/usr (软件放置处)

/etc (配置文件)

/opt (第三方协力软件)

/boot (开机与核心档)

可变动的(variable)

/var/mail (使用者邮件信箱)

/var/run (程序相关)

/var/spool/news   (新闻组)

/var/lock (程序相关)

/下面的每个目录的具体的功能如下图所示

 

aa.png

具体的规定如下表格所示

目录

应放置的文件内容

/

根目录root(/),一般建议在根目录下只有目录,不要直接有文件。根目录是启动时系统第一个载入的分区,所以所有启动过程中会用到的文件都应该放在这个分区中。举例来说,/etc/bin/dev/lib/sbin5个子目录都应该与根目录连在一起,不可独立成为某个分区。

/bin,/usr/bin,
  /usr/local/bin

放置用户可执行的二进制文件的目录。

/boot

放置Linux系统启动时用到的文件。启动会用到Linux的核心文件。这个目录下面的文件vmlinuz就是Linux的核心。这一点非常重要,如果引导程序(loader)选择grub,那么这个目录内还有/boot/grub子目录。

/dev

Linux系统上,任何设备都以文件类型存放在这个目录中,例如键盘、鼠标、硬盘、光盘等。在此目录下的文件会多出两个属性,分别是主设备号(major device number)与辅设备号(minor device number)。系统核心就是通过这两个号码来判断设备的。重要的文件有/dev/null/dev/tty[1-6]/dev/ttyS*/dev/lp*/dev/hd*/dev/sd*等。

/etc

系统主要的设置文件几乎都放在这个目录内,例如人员的账号密码文件、各种服务的起始文件等。一般来说,这个目录下的各文件属性是可以让一般用户查看的,但只有root有权修改。在此目录下的文件几乎都是ASII的纯文本文件。不过,FHS建议不要在这个目录中放置可执行文件。比较重要的文件有:/etc/inittab/etc/init.d/etc/modprobe.conf/etc/X11/etc/fstab/etc/sysconfig等。

/home

这是系统默认的家目录(home directory)

/lib,/usr/lib,
  /usr/local/lib

系统使用的函数库的目录。程序在运行过程中,可能会调用一些额外的参数,这需要函数库的协助。这些函数库就放在此处。比较重要的是/lib/modules目录内有核心的相关模块。

/lost+found

系统出现异常,产生错误时,会将一些遗失的片段放于此目录下,通常这个目录会自动出现在某个分区顶层的目录下。

/mnt/media

这是软盘与光盘的默认载入点。通常软盘挂在/mnt/floppy下,光盘挂在/mnt/cdrom下。

/opt

这是给主机额外安装软件所放的目录。举例来说,FC4使用Fedora团队开发的软件,如果想要自行安装新的KDE桌面软件,可以将该软件安装在这个目录下。不过,以前的Linux系统中,我们还是习惯放在/usr/local目录下。

/proc

这个目录本身是一个虚拟文件系统,它放置的数据都在内存中,例如系统核心、外部设备的状态及网络状态等。因为这个目录下的数据都在内存中,所以本身不占任何硬盘空间。比较重要的文件有/proc/cpuinfo/proc/dma/proc/interrupts/proc/ioports/proc/net/*等。

/root

系统管理员(root)的家目录。之所以放在这里,是因为系统第一个启动就载入的分区为/,而我们希望/root能够与/放在同一块分区上。

/sbin,/usr/sbin,
  /usr/local/sbin

放一些系统管理员才会用到的可执行命令,例如:fdiskmke2fsfsckmkswapmount等。与/bin不太一样的地方是,这几个目录是给root系统管理用的。但目录下的执行文件可以让一般用户用来查看而不能设置。

/srv

一些服务启动之后,这些服务所需要访问的数据目录。举例来说,WWW服务器需要的网页数据就可以放在/srv/www中。

/tmp

这是让一般用户或者是正在执行的程序临时放置文件的地方。这个目录是任何人都能访问的,所以需要定期清理。当然,重要数据不可放在此目录中。

/usr

根据FHS规范的第二层内容,在/usr目录下,包含系统的主要程序、图形界面所需要的文件、额外的函数库、本机自行安装的软件,以及共享的目录与文件。它有点像Windows操作系统中的“Program files”“Windows”这两个目录的结合。在此目录下的重要子目录有:

·           /usr/bin,/usr/sbin:一般身份用户与系统管理员可执行文件放置目录

·           /usr/includec/c++等程序语言的文件头(header)与包含文件(include)放置处,当以tarball方式(*.tar.gz的方式安装软件)安装某些数据时,会使用到里面的许多包含文件。

·           /usr/lib:各种应用软件的函数库文件放置目录。

·           /usr/local:本机自行安装的软件默认放置的目录。当前也适用于/opt目录。在安装完Linux之后,基本上所有的配置都有了,但软件总是可以升级的,例如要升级代理服务,则通常软件默认的安装地方就是/usr/local中。当安装完之后所得到的执行文件,为了与系统原执行文件区分,升级后的执行文件通常放在/usr/local/bin中。建议将后来才安装的软件放在这里,便于管理。

·           /usr/share:共享文件放置的目录,例如/usr/share/doc目录放置一些系统帮助文件、/usr/share/man放置manpage文件。

·           /usr/srcLinux系统相关的程序代码放置目录,例如/usr/src/linux为核心源码。

·           /usr/X11R6:系统内的X Window System所需的执行文件几乎都放在这里。

/var

这个目录也很重要,也是FHS规范的第二层目录内容。它主要放置系统执行过程中经常变化的文件,例如缓存(cache)或者是随时更改的日志文件(log file)。此外,某些软件执行过程中会写入的数据库文件,例如MySQL数据库,也都写入这个目录中。它下面的主要目录有:

·           /var/cache:程序文件在运行过程中的一些暂存盘。

·           /var/lib:程序执行的过程中,使用的数据文件放置的目录。例如locate数据库与MySQLrpm等数据库系统,都写在这个目录中。

·           /var/log:登录文件放置的目录,很重要。例如/var/log/messages就是总管所有登录文件的文件。

·           /var/lock:某些设备具有一次性写入的特性,例如tab(磁带机),此时,为了避免被其他人干扰正在运行的操作,会将该设备lock(锁)起来,以确定该设备只能被单一程序所用。

·           /var/run:某些程序或者是服务启动后,会将它们的PID放在这个目录下。

·           /var/spool:是一些队列数据存放的地方。例如主机收到电子邮件后,就会放到/var/spool/mail中,若信件暂时发不出去,就会放到/var/spool/mqueue目录下,用户工作任务分配(cron)则是放在/var/spool/cron中。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创文章,作者:hanlln1,如若转载,请注明出处:http://www.178linux.com/52138

(0)
hanlln1hanlln1
上一篇 2016-10-18
下一篇 2016-10-18

相关推荐

  • Linux基础学习总结(六)

    一、完成如下练习 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; vim: cp /etc/rc.sysinit /tmp/rc.sysinitvim/tmp/rc.sysinit:%s@^[[:space:]]\+@#&@g sed: sed “s/…

    Linux干货 2016-10-30
  • 正则表达式基础以及grep的简单使用

    正则表达式基础以及grep的简单使用   1,定义 正则表达式是你所定义的模式模板,Linux可以用它来过滤文本。Linux工具(比如grep、sed、gawk)能够在处理数据时使用正则表达式对数据进行模式匹配。如果数据匹配模式,它就会被接受并进一步处理;如果数据不匹配,它就会被滤掉。 2,正则表达式的原则 (1)正则表达式模式都区分大小写。(2)…

    2017-04-09
  • Linux yum客户端的配置及yum命令

    一、什么是yum我们在Linux系统上安装处理软件,一般是使用RPM,它是通过预先编译完成并且把软件打包为RPM文件格式后,再加以安装的一种方式,使用者只要拿到这个打包好的软件,然后将里头的文件放置到应该摆放的目录,这样就完成了安装。但是,由于有些软件是有依赖于其他软件的,当你要安装某个RPM类型的软件时,RPM会检验RPM软件数据库,它所依赖的相关软件包是…

    2017-06-11
  • linux发展史

    linux发展史简介: 20世纪60年代,MIT开发分时操作系统(Compatible TIme-Sharing System),支持30台终端访问主机;     ~主机负责运算,而终端负责输入输出; 1965年,Bell实验室、MIT、GE(通用电气公司)准备开发Multics系统,为了同时支持3…

    Linux干货 2016-10-14
  • RAID特性和常见级别

    简介:    RAID全称为独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、 容量巨大的硬盘。RAID通常被用在服务器电脑上,使用完全相同的硬盘组成一个逻辑扇区,因此操作系统只会把它当做一个硬盘。 R…

    Linux干货 2016-02-14
  • 文本处理工具

    文本处理工具 一、文本处理命令less,cat,more,sort 1.less  less :一页一页地查看文件或STDIN 输出  查看时有用的命令包括:   /文本  搜索 文本   n/N 个 跳到下一个 or  上一个匹配   less 命令是man…

    系统运维 2016-08-08