liunx目录配置标准(FHS)
为了统一各种文件的放置,所以就有了所谓的Filesystem hierarchy Standard(FHS)
目录主要被划分为四种交互作用的形态:
分类 | 可分享的(Shareable) | 不可分享的(unShareable) |
---|---|---|
不变的(static) | /usr(软件放置处) | /etc(配置文件) |
不变的(static) | /opt(第三方软件) | /boot(开机相关和内核文件) |
可变动的(variable) | /var/mail(用户邮件信箱) | /var/run(程序相关) |
可变动的(variable) | /var/spool/news(新闻组) | /var/lock(程序相关) |
可分享的: 可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载的点
不可分享的: 自己机器上运行的设备文件或者是与程序有关的socket文件等,由于仅仅与自身机器有关,所以不适合分享给其他主机
不变的: 有些数据是不会经常变动的,随着distribution而不变动。例如:函数库、文件说明文件、系统管理员所管理的主机服务配置文件等
可变动的: 经常改变的数据,例如登陆文件、新闻组和www服务的/var/www/html目录等
目录架构
事实上,根据目录树架构仅定义出三层目录下面应该放置什么数据,分别是如下三个目录的定义:
- / (root,根目录) : 与开机系统有关
- /usr (UNIX software resource) : 与软件的执行/安装有关
- /var (variable) : 与系统的运作过程有关
/ (根目录)
根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机,还原,系统修复等重要操作相关。
FHS建议:根目录所在的分区应该越小越好,且应用程序所安装的软件最好不要和根目录装在同一个分区内,保持根目录越小越好,这样的话不但性能较好,根目录所在的文件系统也不容易发生问题。
根目录的子目录
目录 | 应放置文件内容 |
---|---|
/bin | 系统有很多放置执行文件的目录,但是/bin比较特殊。因为/bin放置的是在单用户维护模式下还能够被使用的命令,在/bin下面的命令可以被root和一般账号所使用,主要有cat,chmod,cchown,date,mv,mkdir,cp,bash等常用的命令 |
/boot | 这个目录主要放置开机会使用到的文件,包括liunx的内核文件以及开机菜单与开机所需配置文件等。liunx kernel常用的文件名为vmlinuz |
/dev | 在linux系统上,任何设备与接口设备都是以文件的形式存在于这个目录中的。你只需要通过访问这个目录下的某个文件,就相当于访问了某个设备。比较重要的文件有/dev/null,/dev/zero,/dev/tty,/dev/lp,/dev/hd,/dev/sd*等 |
/etc | 系统的主要配置文件几乎全在这个目录中,例如人员的账号密码文件,各种服务的起始文件等。一般来说,这个目录下的各文件属性是可以让一般用户查阅的,但是只有root用户有权利修改,在这个目录中比较重要的文件有/etc/inittab,/etc/init.d/,/etc/sysconfig等 |
/home | 这是系统默认的用户主文件夹,在你创建一个新用户时,默认的用户主文件夹就会在这个目录下 |
/lib | 在这个目录下放置的是在开机时会用到的函数库,以及在/bin或者/sbin下面的命令调用的函数库,最重要的是/lib/modules这个目录,因为该目录会放置内核相关模块(驱动) |
/media | 看这个名字就知道了,这个目录下面放置的就是可删除的设备,包括光盘,U盘,DVD |
/mnt | 主要用来挂载额外的设备 |
/opt | 这是给第三方软件放置的目录 |
/root | root用户的主文件夹。之所以放在这里是因为,如果进入单用户维护模式而仅挂载根目录时,该目录就能拥有root的主文件夹,所以将root与根目录放入一个分区之中 |
/sbin | linux有很多命令是用来设置系统环境的,但是这些命令只有root用户才能使用,其他用户最多只能查询一下,放在/sbin目录下的为开机过程中所需要的,里面包括了开机,修复,还原系统所需要的命令,至于某些服务器程序,一般放置到/usr/sbin中。至于本机自行安装的软件所产生的系统执行文件,则放置到/usr/local/sbin当中。常见的命令包括fdisk,fsck,ifconfig,init,mkfs等 |
/srv | 就是serve的缩写,在一些网络服务启动之后,这些服务所需要取用的目录 |
/tmp | 这个让一般用户或是正在执行的程序暂时放置文件的地方 |
其他目录
目录 | 应放置文件内容 |
---|---|
/lost+found | 这个目录是在ext2/ext3文件格式下才会产生的一个目录,目的在于档文件系统发生错误是,将一些丢失的片段放在这个目录下面 |
/proc | 这个目录本身是一个虚拟文件系统,它放置的数据都是在内存中,例如系统内核,进程,外部设备的状态,网络状态等,因为这个目录下的文件都在内存中,所以不占任何硬盘空间 |
/sys | 和/proc差不多,主要也是记录与内核相关的信息,包括目前已加载的内核模块与内核检测的硬件折别信息等,同样不占硬盘容量 |
注意
除了这些目录的内容外,需要注意的是,因为根目录与开机相关,开机过程中仅有根目录会被挂载,其他分区是在开机之后才会持续进行挂载的行为。因为如此,根目录下面的与开机过程有关的目录就不能与跟不撸分开放到不同的分区,就是下面这些:
- /etc : 配置文件
- /bin : 重要执行文件
- /dev : 所需要的设备文件
- /lib : 执行文件依赖的函数库
- /sbin : 重要的系统执行文件
/usr目录
FHS建议所有软件开发者将他们的数据合理的放在这个目录的子目录下面
因为所有系统默认软件(distribution 发布者提供的软件)都会放在/usr下面,所以这个目录就像在windows系统中的C:\Program files这个目录,子目录主要有如下这些:
目录 | 应放置文件内容 |
---|---|
/usr/bin | 绝大部分的用户可使用命令都放在这里,与/bin不同的地方在与开机过程无关 |
/usr/include | C/C++语言的头文件与包含文件放置处 |
/usr/lib | 包含各应用软件的函数库,目标文件。以及不被一般用户惯用的执行文件或脚本。某些软件会提供一些特殊的命令来进行服务器的设置,这些命令不会经常被使用,那么就会被放在这个目录下 |
/usr/local | 系统管理员在本机自行安装的软件,建议安装到此目录,这样便于管理,这个目录这子目录和/usr目录相似 |
/usr/sbin | 非系统正常运行所需要的命令,最常见的就是某些网络服务器软件的服务命令 |
/usr/share | 放置共享文件的地方,在这个目录下放置的数据几乎部分硬件架构都可以读取的数据,因为基本都是文本文件,一般有以下子目录:1. /usr/share/man:在线帮助文件(man命令查询的文件) 2./usr/share/doc: 软件杂项的文件说明 3./usr/share/zoneinfo:与时区有关的时区文件 |
/usr/src | 源码一般建议放置到这里,src有source的意思,至于内核源码这建议放置到/usr/src/linux下 |
/var目录
/var目录主要针对常态性变动的文件,包括缓存,登陆文件以及某些软件运行产生的文件,包括程序文件,或者例如MySQL的数据库的文件等。主要子目录为以下几个:
目录 | 应放置内容 |
---|---|
/var/cache | 应用程序运行过程中会产生的一些暂存文件 |
/var/lib | 程序本身的执行过程中,需要使用的数据文件放置的目录,在此目录下各自的软件应该要有各自的目录,例如,MySQL的数据库放置到/var/lib/mysql中 |
/var/lock | 给某些设备或是文件资源上锁,使某些设备或资源确保只能同时一次只能被一个程序使用 |
/var/log | 登陆文件放置的目录。 |
/var/mail | 放置电子邮件信箱的目录,不过目录也被放置到/var/spool/mail中,通常这两个目录是互为链接文件的 |
/var/run | 某些程序或者服务被启动之后会将PID放在这个目录下 |
/var/spool | 这个目录通常放置一些队列数据,就是排队等待其他程序使用的数据,这些数据被使用之后通常会被删除。 |
OK!