-
FilesystemHierarchy Standard (FHS)文件系统层级标准
文件分类原则:
可以把文件按照两个属性来区分:共享的(shareable)vs不可共享的(unshareable)可变的(variable)vs静态的(static),按照这两种不同的属性,应该把文件存储到不同的地方。
共享:指文件存储在一个主机上,是否可以在其他主机上访问。例如用户主目录下的文件是可以在其他地方访问并使用且有意义,但是设备锁文件则在地方主机上访问使用对于访问主机是没有意义的,因为这个设备锁文件跟他的硬件并没有关系,也就是没有意义的。
可变/静态:如果文件在没有用户修改的情况下是不会改变的则是静态的,相反则是可变的。例如二进制文件,文档,类库等就是静态的,而系统运行时生成的变量,锁,你的邮箱服务等就是可变的,也就是你不主动用编辑器修改该文件,他也可能改变,如果别人给你发来了邮件,设备被锁定了。
| shareable | unshareable |
static | /usr | /etc |
| /opt | /boot |
variable | /var/mail | /var/run |
| /var/spool/news | /var/lock |
我使用的是ubuntu12.04,这个版本的饿ubuntu还是使用的FHS2.3的标准,似乎已经有FHS3的标准了,估计还要一段时间才会使用,但大部分还是不会改变的。下面的就是2.3标准
-
ubuntu12.04文件系统层级目录
/
---bin
---boot
---dev
---etc
---lib
---media
---mnt
---opt
---sbin
---srv
---tmp
---usr
---var
------------这上面的是FSH标准的根目录下必需的目录
---home
---lib(qual) eg:lib64,lib32
---root
------------如果系统是发行的子系统,这三个目录就会出现
---lost+found
---run
---cdrom
---proc
---sys
------------上面几个目录是ubuntu特有的,或者是debian特有的
-
目录原则和要求
/binEssentialuser command binaries (for use by all users)
这个目录存放基本的用户命令二进制文件或者二进制文件的软链接,常用的ls,cp,kill,mv,ps等命令的二进制文件就存放在此
/bootStaticfiles of the boot loader
这个目录存放只在引动程序需要的文件
/devdevicefiles
这个目录存放设备的驱动文件
/etcHost-specificsystem configuration
这个目录存放本地的配置文件,不能存放二进制文件
/homeUserhome directories(optional)
用户主目录,任何程序的运行不应该依赖这个目录下的文件
/libEssentialshared libraries and kernel modules
存放系统启动和基础程序必需的共享类库,包括内核文件
/mediaMountpoint for removeable media
作为可移动设备的挂载点
/mntMountpoint for a temporarily mounted filesystem
作为设备的临时挂载点
/optAdd-onapplication software packages
存放附加软件的包文件
/roothomedirectory for the root user(optional)
root用户的默认目录
/sbinSystembinaries
系统管理和其他只能root用户使用的二进制文件或者二进制文件的软链接,例如系统启动,重启,恢复,等系统级别的命令,eg:shutdown。但是本地安装的系统管理程序不该放在这里,应该放在/usr/local/sbin中
/srvDatafor service provided by this system
刚目录存放系统提供的服务中的站点数据,例如www,ftp,cvs,等服务的数据,这些通过协议+IP访问的服务中的数据
/tmpTemporaryfiles
临时文件目录,存放那些在系统重启后或者在系统启动后会被删除的文件,比如mysql.sock文件经常就放在该目录下
/usrSecondaryhierarchy
这个目录是主要的二级目录,简单说他算是个二级根目录,这个目录应该是可共享,只读的。任何和登陆用户专属的文件或者随着时间变化的文件不应该放在该目录下。
/usr目录下必需有这些目录:bin,include,lib,local,sbin,share.
其中
/usr/bin存放大多数用户命令
/usr/include存放C语言程序需要的头文件
/usr/lib类库,例如jvm,perl,python等运行环境
/usr/local本地文件(在刚安装的系统上这个目录是空的)
/usr/sbin不是至关重要的系统二进制文件
/usr/share体系结构独立的数据,大概是说不依赖其他文件的数据
/varvariabledata
这个目录的文件是随着时间会变化的,例如用户登陆日志,各种日志,锁,运行期参数,邮箱,缓存等。一般用户尤其是root用户需要查看该目录,但不主动存放文件到该目录下
/lib64and /lib32
这个目录下的文件根据系统架构不同而不同
/prockeneland process information virtual filesystem
包含存储和检索程序,内核,内存的信息
-
放在哪里
/home/usrname:所有属于自己的文件都应该放在该目录下,如果你不是root用户那么一般你也只能使用自己的主目录。
/usr/lib: /usr/lib/java/jdk7, /usr/lib/java/jdk8,任何语言所需的环境都应该放到放到该目录下,
/opt:如果是附加软件,比如chrome,elipse,的包文件应该放到该目录下,也就是任何不和系统相关并且独立的软件应该安装到/opt
使用deb或者软件中心或者apt-get安装时并不需要选择安装路径,但基本上遵循这样的路径,
程序的文档->/usr/share/doc;/usr/local/share/doc
程序->/usr/share;/usr/local/share
程序的启动项->/usr/share/apps;/usr/local/share
程序的语言包->/usr/share/locale;/usr/local/share/locale
可执行文件->/usr/bin;/usr/local/bin