Linux目录配置的依据---FHS
1.概念:利用Linux开发产品的公司以及个人很多,每个人如果都是用不同的想法来配置目录,那么就会造成管理上的很多不便,于是就有了FHS标准的出炉
2.FHS的目的:让用户可以了解到已安装的软件通常放置于那个目录下,让独立开发软件的开发商、操作系统制造者等都遵循FHS标准
3.FHS协议下目录的分类
可分享 | 不可分享 | |
不变 | 例如:/usr(软件存放处) | 例如:/etc(配置文件) |
例如:/opt(第三辅助软件) | 例如:/boot(启动与内核、文件) | |
可变动 | 例如:/var/mail(用户邮箱) | 例如:/var/\run(程序相关) |
例如:/var/spool/news(新闻组) | 例如:/var/lock(程序相关) |
- 可分享:可以分享给其他系统挂在使用的目录,所以包括执行文件以后用户的邮件等数据
- 不可分享:自己机器上面运行的设备文件或是与程序有关的socket文件等,不适合分享给其他主机
- 不变:有些数据不会经常变动,例如函数库、说明文件、、系统管理员所管理的主机服务配置文件等
- 可变动:经常修改的数据,例如日志文件、一般用户课自行接受的新闻组等
4.FHS协议下针对目录树架构下定义出三层主要目录
- /(root,根目录):与启动系统有关
- /usr:与软件安装/执行有关
- /var:与系统运行过程有关
一、根目录:/
1.引入
- 根目录是整个系统最重要的一个目录,所有的目录都从根目录繁衍出来,同时根目录还与启动、还原、系统修复等操作有关
- 由于系统启动时需要特定的启动软件、内核文件、启动所需程序、函数库等文件数据,若系统出现错误时,根目录也必须包含能够修复文件系统的程序才行
- FHS要求,根目录不要放在非常大的分区内,因为分区越大,放置的文件越多,越容易产生错误
2.目录结构
- FHS要求必须存在的目录
/bin | 系统有很多存放执行文件的目录,但是/bin比较特殊。/bin目录下放置的是在单人维护模式下还能够被执行的命令。/bin目录下的命令可以被root和一般账号使用。例如:cat、chmod、mv、mkdir... |
/boot | 主要放置启动会使用到的文件,包括Linux内核文件以及启动选项与启动所需配置文件等。Linux内核常用的文件名为:vmlinuz。如果使用grub2这个启动引导程序,则还会存在/boot/grub2/这个目录 |
/dev | 任何设备与接口设备都以文件的形式存在于这个目录中,操作某个文件就相当于读写这个设备,比较重要的有:/dev/null、/dev/zero、/dev/tty等 |
/etc | 系统主要的配置文件几乎都放置在这个目录内。例如:人员的账号密码、各种服务的启动文件等。这个目录下文件的各种属性可以让一般用户查看,但是只有root才有权修改。FHS建议不要放置可执行文件在这个目录中。比较重要的文件有:/etc/modprobe.d、/etc/passwd、/etc/fstab、/etc/issue等。还有几个比较重要的目录。
|
/lib | 放置的是启动时会用到的函数库,以及在/bin或/sbin下面的命令会调用的函数库。
|
/media | 放置的是可删除的设备。包括:软盘、光盘、DVD等设备都暂时挂载于此。常见的由/modia/floppy、/media/cdrom等 |
/mnt | 如果你想暂时挂载某些设备,一般建议放置在这个目录下。早些时候,这个目录的用途与/media相同。只是有了/media之后,这个目录就暂时用来挂载 |
/opt | 第三方辅助软件放置的目录。如果你想要自行安装额外的软件,可以装在这个地方 |
/run | 早起的FHS规定系统启动后所产生的各项信息应该放置在/var/run目录下。FHS新规范到/run目录下。由于/run使用内存来模拟,因此性能上会很好 |
/sbin | Linux有很多常用的命令是用来设置系统环境的,这些命令只有root才能够用来设置系统,其他用户只能查询。此目录下面放置的是启动过程中所需的启动、修复、还原系统所需要的命令。常用的命令有:fdisk、fsck、ifconfig、mkfs |
/srv | 是一些网络服务启动之后,这个服务所需要使用的数据目录。常见的由WWW、FTP等。例如:WWW服务器所需的网页数据就防止在/srv/www/里面。不过,系统的服务数据如果尚未要提供给因特网任何人浏览的话,建议放置在/bar/lib下面 |
/tmp | 让一般用户或正在执行的程序暂时放置文件的地方。这个目录任何人都能够存取,所以需要定期地清理一下。当然,重要数据不要放置在这里 |
/usr | 后续介绍 |
/var | 主要放置变动性数据,后续介绍 |
- FHS建议可以存在的目录
/home | 系统默认的用户家目录。每新增一个一般用户账号时,默认的用户家目录都会规范到这里来
|
/lib<qual> | 用来存放于/lib不同格式的二进制函数库。例如:支持64位的/lib64函数库等 |
/root | 系统管理员的家目录。之所以放在这里:因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以希望root的家目录与根目录放置在同一个分区中 |
- 一些其他比较重要的目录
/lost+found | 这个目录是使用ext2、ext3、ext4文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时,将一些遗失的片段放置到这个目录下。如果使用的是xfs文件系统的话,就不会存在这个目录 |
/proc | 这个目录本身是一个虚拟文件系统,它放置的数据都是在内存中的,本身不占用任何硬盘空间。例如:系统内核、进程信息、外接设备的状态以及网络状态等。重要的有:/proc/cpuinfo、/proc/dma、/proc/interrupts、/proc/net/*等 |
/sys | 这个目录与/proc目录非常相似,也是一个虚拟的文件系统。主要记录内核与系统硬件信息相关的内容。包括目前以加载的内核模块与内核检测到的硬件设备信息等。也不占用硬盘空间 |
二、/usr目录
1.引入
- FHS规定,/usr里面放置的数据属于可分享与不可变动
- 因为所有系统默认的软件都会放置在/usr下面,因此此目录类似于Windows下“C:\Windwos\”+“C:\Program Files\”两个目录的结合
- 所以,系统刚安装完毕之后,此目录会占用最多的硬盘空间
2.目录结构
- FHS规定必须要存在的目录
/usr/bin/ | 一般用户能够使用的命令都放置在这里。使用链接文件的方式将/bin链接在此,所以/usr/bin/与/bin是一模一样的。此目录下要求不要再有子目录 |
/usr/lib/ | 基本上,与/lib功能相同,所以/lib就是链接到此目录中的 |
/usr/local/ | 系统管理员在本机安装自己下载的软件,建议安装到此目录,便于管理。该目录也具有bin、etc、include、lib...等子目录 |
/usr/sbnin/ | 非系统正常运行所需要的系统命令,最常见的就是某些网络服务器软件的服务命令。不过,基本功能与/sbin也差不多。目前/sbin就是链接到此目录中的 |
/usr/share/ | 主要放置只读的数据文件,也包括共享文件。几乎是文本文件。常见的有
|
- FHS建议可以存在的目录
/usr/games/ | 与游戏相关的数据放置处 |
/usr/include/ | C/C++等程序语言的头文件与包含文件放置处 |
/usr/libexec/ | 某些不被一般用户常用的执行文件或脚本等,会放置在这里。例如:大部分的X 窗口下面的操作命令 |
/usr/lib<qual>/ | 与/lib<qual>/功能相同,因此码目前/lib<qual>就是链接于此 |
/usr/src/ | 一般源代码建议放置在这里。置于内核源代码建议放置在/usr/src/Linux/目录下 |
三、/var目录
1.引入
- /var就是在系统运行后才会渐渐占用内存的目录
- /var目录主要针对经常变动的文件,包括缓存、日志文件以及某些软件运行所产生的文件。例如程序文件、MySQL数据库的文件等
2.目录结构
- FHS规定必须存在的目录
/var/cache/ | 应用程序本身运行过程中会产生的一些缓存 |
/var/lib/ | 程序本身运行的过程中,需要使用到的数据文件放置的目录。此目录各自软件有各自的目录。例如:MySQL数据库放置到/var/lib/mysql,rpm数据库则放置到/var/lib/rpm |
/var/lock/ | 某些设备文件或是文件资源一次只能被一个应用程序所使用,如果有两个程序使用此设备时,就会产生错误,因此就得要将该设备上锁。目前,此目录也已经挪到/run/lock中 |
/var/log/ | 非常的重要。这是日志文件放置的目录,重要的有:/var/log/messages、/var/log/wtmp(记录登录信息)等 |
/var/mail/ | 放置个人电子邮箱的目录,这个目录被放置到/var/spool/mail/目录中,这两个目录互为链接文件 |
/var/run/ | 某些程序或是服务启动后,会将它们的PID放置在这个目录下,PID后面会介绍 |
/var/spool/ | 这个目录通常放置一些队列数据,所谓队列就是排队等待其他程序使用的数据。这些数据使用后通常会被删除 |