目录配置标准? 虾米意思?
大多数Window用户对目录的概念就是C、D、E、F盘和树形目录,他们(也许是你们)对于文件目录管理有着个性的想法,甚至毫不关心。比如,读者们的JVM程序放在什么地方。相信答案会千奇百怪。
那么,这样的做法有什么问题没有?应该说是没什么大问题的。因为WIndow是单用户OS,也就是说它是“个人的”,外人很少接触,因此,也就不用关系你 的配置习惯,你可以随意配置。然而,Linux则不同。Linux是多用户OS,也就是说有可能你们公司的所有人用的是同一个操作系统,你能想象当你们公 司团队一起做项目时,你要不时的去问你的伙伴:“嘿,那个什么什么你放到哪了?”。或者,你进入一个新的公司时,Linux配置方法竟然跟你一起学的不一 样!所以,就有了FHS(FileileSystem Hierarchy Statand)标准的出炉。
根据FHS官方(可查找http://www.pathname.com/fhs/)指出,其主要目的是希望让用户了解到已安装文件放置在哪里,并且,这 种规则独立于软件开发商、操作系统制作团队以及操作系统用户。简单的说,就是要规范每个特定的目录放置什么样的数据。FHS是被建议每个公司或个人遵守的准则。
FHS将目录按可变性分为不变的(static)和可变的(varabale),按安全性分为可分享的(shareable)和不可分享的(unshareable)。简单说明见下:
___________________________________________________________________________
| 可分享的 | 不可分享的
___________________________________________________________________________
| /usr(软件放置处) | /etc(配置文件)
不变的 |__________________________________________________________
| /opt(第三方软件) | /boot(开机与内核文件)
___________________________________________________________________________
| /var/amail(用户邮件信箱) | /var/run(程序相关)
可变的 |___________________________________________________________
| /var/spoola/news(新闻组) | /var/lock(程序相关)
___________________________________________________________________________
* 可分享的:可以分享给其他系统挂载的目录,所以包括执行文件与用户邮件。该目录中的东西能够被网络中的其他主机挂载使用
* 不可分享的:自己机器上面的设备文件或者是与程序相关的socket文件等,仅与自身机器有关。
* 不变的:某些数据不会经常跟随disteibution而改变。如文件说明文件、C函数库、shell等等。
* 可变动的:顾名思义。经常会改变的,如登录文件、新闻等等。
下面是FHS定义出的根目录(/)下面应该有的子目录 :
1 、 /bin :专业人士(当然也包括像我一样的伪专业人士)都应该知道 bin 指的是二进制文件,即普通用户最为关心的可执行文件。事实也确实如此, /bin 目录下放的便是可执行文件。但是, /bin 目录下的可执行文件比较特殊,仅仅是单人维护模式下还能被执行的文件,如 cat 、 mkdir 、 chmod 等等命令。简单的说,也就是能够被 shell 所用到的执行命令。非原本的 distribution 提供的文件建议不要放在该目录下。
2 、 /boot :与开机启动相关的系统目录。包括了 Linux 内核 Kernel—— 通常名为 vmlinuz-x.x.x.xx-generic 。同时,该目录下还包括开机引导程序 grub/ 。
3 、 /dev :在 Linux 中,有一个很重要的规则—— everything is file 。 Linux 对所有的东西一视同仁,那么,硬件设备在 Linux 开来也是文件。如, /dev/bus/ 是总线目录,常用到的 USB 端口便在该目录之下,删除了该目录, USB 接口便没有作用了。再比如 /dev/ppp 文件指的是 Linux 系统中的网络接口。
4 、 /etc :放置系统的主要配置文件,比如权限、系统参数等等。该目录中的文件可以被所有人查看,但只有 root 用户拥有修改权限。
5 、 /home :系统默认的用户目录( home directory )。目录下方会为每一个注册用户分配一个目录。
6 、 /lib :放置与开机相关的函数库(但不是所有的函数库都在此,比如下载的 JDK )。其中,有一个很重要的目录 ----/lib/modules/ ,放置的是开机驱动程序。
7 、 /media :媒体目录,其下放置的是可移除装置,如光驱,软盘驱动等等。
8 、 /mnt :作用被 /media 取代,不是很重要。
9 、 /opt :这个是给第三方协力软件放置的目彔。 通常, distribution 中会有很多“搭载”程序,如 KDE 和 Gnome 桌面环境系统。
10 、 /root :同 /home ,系统管理员 (root) 的家目录。之所以放在这里 , 是因为如果进入单人维护模式而仅挂 载根目录时 , 该目录就能够拥有 root 的家目录 , 所以我们会希服 root 的家目录和根目录放置在同一个分割槽中。
11 、 /sbin :放在 /sbin 底下的为开机过程中所需要的指令 , 里面包括了开机、修复、还原系统所需要的指令。
12 、 /srv :放置的是与网络相关的文件,如 WWW 、 FTP 等。
13 、 /tmp :缓存文件放置目录。需要定时清理。
下面还有一个 Linux 用户经常访问的重要目录: /usr
/usr 是 Unix Software Resource 的缩写,即 Uinx 软件资源。我们通过软件中心下载的软件都放在这里。
如笔者的 eclipse 执行文件路径是 /usr/bin/eclipse 。
/usr 目录下会有许多的次级目录,如 /usr//lib 放置函数库(是否与开机相关?),又比如 /usr/bin