鸟哥的私房菜的6-3.1《Linux 目录配置标准:FHS》笔记
FHS:Filesystem Hierarchy Standard标准,这个标准的主要目的是希望让用户可以了解到已软件通常放于nage 目录下,希望各方都遵守FHS的标准。
可分享 | 不可分享的 | |
不变的 | /usr(软件放置处) | /etc(配置文件) |
不变的 | /opt(第三方软件) | /boot(开机与内核文件) |
可变的 | /var/mail(用户邮件信箱) | /var/run(程序相关) |
可变的 | /var/spool/news(新闻组) | /var/lock(程序相关) |
上图中共有四种交互作用的形态
1. 可分享的:包括执行文件与用户的邮件等数据,能够分享给网络上其他主机挂载用的目录
2.不可分享的:设备文件或程序相关文件等,仅与自身机器有关,所以不适合分享
3.不变的:有些数据不会经常变动,跟随着distribution而不变动。例如函数库,文件说明文件,系统管理员所管理的主机服务配置文件
4.可变的:经常改变的文件,如:登录文件,新闻组等。
事实上,FHS之定义了以下三个目录该放什么数据而已
1. ‘/’ (root目录):与开机系统有关
2. ‘/usr’ (UNIX software resource) : 与软件安装/执行有关
3. ‘/var’ (variable) : 与系统运作有关
FHS建议:根目录(/)所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区,保持根目录越小越好。如此不但性能较好,根目录所在的文件系统也较不容易发生问题
目录 | 应放置文件内容 | 一些例子 |
/bin | /bin放置的是在单用户维护模式下还能被操作的内容 | cat,chmod,chown,date,mv,mkdir,cp,bash等命令 |
/boot | Linux内核文件以及开机菜单与开机所需配置文件等 | 若使用grub引导装载程序,则存在grub目录 |
/dev | 在linux中,任何设备与接口设备都是以文件的形式存在与这个目录当中的。只要你访问这个目录下的某个文件,就等于访问某个设备。 | 比较重要的有:/dev/null,/dev/zero,/dev/tty等 |
/etc | 主要配置文件几乎都在这个目录下。 /etc/init.d/:所有服务的默认脚本都在这里。 /ect/xinetd.d/:这就是所谓的super daemon 管理的各项服务的配置文件目录 /etc/X11/:与X Window有关的各种配置文件都在这里,尤其是xorg.conf这个XServer的配置文件 |
/etc/inittab, /etc/inid.d/, /etc/modprobe.conf/ /etc/X11/ /etc/fstab/ 等 |
/home | 系统默认的用户文件夹。在创建一个账号后,默认的用户主文件夹都会规范到这里来。 | 代号有两种:(1)~:代表目前这个用户的主文件夹 (2)~user002:代表user002的主文件夹 |
/lib | /lib放置的是开机时会用到的函数库, | /lib/modules,这个目录会放置内核相关的模块(驱动程序) |
/media | 放置的是可删除的设备,包括软盘,光盘,U盘等设备都暂时挂载在这。 | /media/floppy, /media/cdrom等 |
/mnt | 暂时挂载某些设备,早期的media,后来有了media,这个目录就用来暂时挂载。 | 如果你想暂时挂载某些额外的设备,一般建议你可以放置到这个了目录下 |
/opt | 第三方软件放置目录。 | |
/root | 系统管理员(root)的主文件夹。 | 我们希望如果进入单用户维护模式而仅挂载根目录是,该目录就能够拥有root的主文件夹,所以我们希望root的主文件夹与根目录放置在同一个分区 |
/sbin | 放在/sbin下面的为开机过程所需要的,里面包括了开机,修复,还原系统所需要的命令 | 某些服务器软件程序,一般放置到/usr/sbin中 本机自行安装的软件所产生的系统执行文件(system binary)则放到/usr/local/sbin中 |
/srv | (可视为service的缩写),一些网络服务启动后,这些服务所需要取用的数据目录。 | WWW服务需要的网页数据就可以放置在/srv/www里面 |
/tmp | 这个目录所有人都可以访问,所以你需要定期清理一下。FHS甚至建议在开机时,应该要将/tmp下的数据都清理 | 一般用户或者是正在执行的程序暂时放置文件的地方。 |
以下这个表格虽然FHS未要求,但是及其重要。
目录 | 应放置内容 |
/lost+found | 这个目录是使用标准的ext2/ext3文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时,将一些丢失的片段放置到这个目录下。这个目录通常会在分区的最顶层存在,例如你加装了一块硬盘于/disk中,那在这个系统下就会自动产生一个这样的目录 “/disk/lost+found” |
/proc | 这个目录本身是一个虚拟文件系统(virtual filesystem)。它所放置的数据都在内存当中,例如系统内核,进程(process),外部设备的状态及网络状态等。因为这个目录下的数据是在内存当中,所以本身不占任何硬盘空间。。。比较重要的文件例如/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/等 |
/sys | 这个目录其实跟/proc非常类似,也是一个虚拟的文件系统,主要也是记录与内核相关的信息。包括目前已加载的内核模块与内核检测到的硬件设备信息等。这个目录同样不占硬盘容量。 |
以下目录必须与根目录在同一分区
/etc:配置文件
/bin:需要执行文件
/dev: 所需要的设备文件
/lib: 执行文件所需的函数库与内核所需的模块
/sbin:重要的系统执行文件
/usr的意义和内容:
1.由FHS分类为:可分享,不可变动
2.FHS建议所有软件开发者应该将他们的数据合理地分别放置到这个目录下的子目录,而不要自行新建该软件自己独立的目录。
3.因为系统默认的软件都会放置到/usr下面,因此这个目录有点类似Windows系统的:“C:\Window\”和“C:\Program file\”这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。
/var的意义和内容
1.如果/usr是安装时会占用较大硬盘容量的目录,那么/var就是在系统运行后才会渐渐占用硬盘容量的目录。因为/var目录主要针对常态性变动的文件,包括缓存(cache),登录文件(logfile)以及某些软件运行所产生的文件,包括程序文件(lock file ,run file),或者例如MySQL数据库的文件等。