Linux下一切都是文件,所以了解Linux下目录所对应的意义与内容就显得极其的重要。下面就来聊一聊Linux目录的配置。讲到目录的配置,就不得不提到Linux目录配置标准(FHS)。
Linux目录配置标准:FHS
因为利用Linux来开发产品或distribution的团队/公司与个人实在太多了,如果每个人都用自己的想法来配置文件放置的目录,那么将造成很多管理上的困扰。所以,后来就有所谓的Filesystem Hierarchy Standard(FHS)标准。
FHS的主要目的是:希望让用户可以了解到已安装软件通常放置在哪个目录下,所以使用者都能够遵循FHS的标准。也就是说,FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。
事实上,FHS针对目录树架构仅定义出三层目录下面应该放置什么数据而已,分别为:
/(root,根目录):与开机系统有关;
/usr(UNIX software resource):与软件安装/执行有关;
/var(variable):与系统运行过程有关。
根目录(/)的意义与内容
根目录是整个系统最重要的一个目录,因为不但所有的目录都是有根目录衍生出来的,而且根目录也与开机、还原、系统修复等操作有关。由于系统开机时需要特定的开机软件、内核文件、开机所需程序、函数库等文件数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的程序。
FHS标准建议:根目录(/)所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好;如此不但性能较好,根目录所在的文件系统也不容易发生问题。
FHS定义出根目录(/)下子目录,如下:
/bin:放置的是在单用户维护模式下还能够被操作的命令。/bin下的命令可以被root与一般用户使用,主要有cat,chmod,chown,date,mv,mkdir,cp,bash等产用命令。
/boot:放置开机会使用到的文件,包括Linux内核文件以及开机菜单与开机所需配置文件等。如使用的是grub这个引导装载程序,则会存在/boot/grub。
/dev:在Linux下,任何设备与接口设备都是以文件的形式存在于这个目录中,你只有通过访问这个目录下面的某个文件,就等于访问某个设备。
/etc:系统的主要配置文件几乎都放置在这个目录内;FHS建议:不要放置可执行文件(binary)在这个目录中。比较重要的目录有:
- /etc/init.d/:所有服务的默认启动脚本都是放在这里
- /etc/xinetd.d/:super daemon管理的各项服务的配置文件目录
- /etc/X11/:与X Window有关的各种配置文件都放在这里
/home:系统默认的用户主文件夹(home directory)。
/lib:系统的函数库非常多,而/lib放置的则是在开机时会用到的函数库,以及在/bin或/sbin下面的命令会调用的函数。如/lib/modules/这个目录,放置的为内核相关的模块(驱动程序)。
/media:放置的是可删除的设备,包括软盘、光盘、DVD等设备都暂时挂载于此。
/mnt:暂时挂载某些额外的设备。
/opt:放置第三方软件的目录。
/root:系统管理员(root)的主文件夹。
/sbin:放置的为开机过程中所需要的,里面包括了开机、修复、还原系统所需的命令。
/srv:srv可以视为“service”的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录。
/tmp:这里是让一般用户或者是正在执行的程序暂时放置文件的地方。
因为根目录与开机有关,开机过会被挂载程中仅有根目录、其他分区则是在开机完成之后才会持续进行挂载的行为。因此根目录下与开机过程有关的目录就不能够与根目录放在不同的分区去。不可与根目录分开的目录有:
/etc:配置文件
/bin:重要执行文件
/dev:所需要的设备文件
/lib:执行文件所需的函数库与内核所需的模块
/sbin:重要的系统执行文件
/usr的意义与内容
usr是UNIX Software Resource的缩写,也就是“UNIX操作系统软件资源”所放置的目录,所有系统默认的软件(distribution 发布者提供的软件)都会放置到/usr下。
/usr的子目录,如下:
/usr/X11R6/:为X Window系统重要数据所放置的目录,之所以取名为X11R6是因为改版的第六次释出
/usr/bin/:绝大部分的用户可使用的命令放在这个目录里
/usr/include/:C/C++等程序的头文件(header)与包含文件放置处
/usr/lib/:包含各应用软件的函数库、目标文件(object file),以及不被一般用户管用的执行文件或脚本(script)
/usr/local/:系统管理员在本机自行安装自己下载的软件,建议安装到这个目录,会比较容易管理
/usr/sbin/:非系统正常运行所需要的系统命令,最常用的就是某些网络服务器软件的服务命令(daemon)
/usr/share/:放置共享文件的地方
- /usr/share/man:在线帮助文件
- /usr/share/doc:软件杂项的文件说明
- /usr/shar/zoneinfo:与时区有关的时区文件
/usr/src/:一般源码建议放置到这里,src有source的意思,内核源码则建议放置到/usr/src/linux/目录下
/var的意义与内容
/usr是安装时会占用较大硬盘容量的目录,那么/var就是系统运行后才会渐渐占用硬盘容量的目录。因为/var目录主要针对常态性变动的文件,包括缓存(cache)、登录文件(log file)以及某些软件运行所产生的文件,包括程序文件(lock file,run file)。
/var的子目录,如下:
/var/cache/:应用程序本身运行过程中会产生的一些暂存文件
/var/lib/:程序本身执行的过程中,需要使用到的数据文件放置的目录
/var/lock/:某些设备或 者是文件资源一次只能被一个应用程序所使用,如果同时又两个程序使用该设备时,就可能产生一些错误的状态,因此就得要将该设备上锁(lock),以确保该设备只会该单一软件所使用
/var/log/:登录文件放置的目录
/var/mail/:放置个人电子邮件信箱的目录
/var/run/:某些程序或者服务启动后,会将它们的PID放置在这个目录下
/var/spool/:这个目录通常放置一些队列数据,所谓“队列”就是排队等待其他程序使用的数据