Linux目录标准
在Linux学习中,目录是至关重要的部分,他能让你更清晰的了解Linux的运行过程
同时为了避免各类Linux的目录千奇百怪,Linux 基金会发布了 FHS(Filesystem Hierarchy Standard) 标准。多数 Linux 发行版系统都遵循这一标准。
根据FHS,将目录定义为一下四种交互作用的状态:
- 可共享: 可以共享给其他系统挂载使用的目录。
- 不可共享: 自己机器上运行的设备文件或是与程序相关的Socket文件,不可 与其他主机共享。
- 不变: 跟随发行版而不变动的数据,例函数库、文件说明等。
- 可变动: 经常修改的数据,例日志文件新闻组等。
可共享(shareable) | 不可共享(unshareable) | |
---|---|---|
不变(static) | /user(软件存放处) | /etc(配置文件) |
/opt(第三方辅助工具) | /boot(启动与内核文件) | |
可变动的(variable) | /var/mail(用户邮箱) | /var/run(程序相关) |
/var/spool/news(新闻组) | /var/lock(程序相关) |
FHS针对目录树架构定义了一下三层目录:
- /(root 根目录):与启动系统有关
- /usr(unix software resource):与软件安装执行相关
- /var:与系统运行过程相关;
根目录(/)
- 所有的目录都是由根目录衍生出来的
- 根目录与启动、还原、系统修复相关
- FHS建议根目录所在的分区越小越好,且应用程序安装的软件尽量不要与根目录放在同一个分区
根目录下的部分子目录见下表:
目录 | 功能简述 |
---|---|
/bin | 放置系统执行文件的目录,且放置的是单人维护模式下还能被使用的命令,在/bin目录下的命令可以被root及一般账户使用,例如:cat、chmod、chown等 |
/boot | 主要放置与启动相关的文件,包括Linux的内核文件等 |
/dev | 任何设备与接口设备都以文件的形式存放在这个目录 |
/etc | 系统的配置文件存放区,例如人员的账户密码等文件,这个目录一般用户只有查看权限,只有root有权利修改,FHS建议不要放置可执行文件在这个目录下 |
/lib | 放置了启动时会用到的函数库,以及在/bin和/sbin下面的命令调用的函数库,且FHS要求以下目录必须存在:/lib/modules/ 这个目录主要放置可抽换式的内核相关模块(驱动程序) |
/media | 放置可删除的设备,如软盘、光盘、DVD等 |
mnt | 暂时用来挂载一些额外的设备 |
/opt | 给第三方辅助软件放置的目录 |
/run | 放置启动后所产生的各项信息 |
/sbin | 放置了启动过程中所需要的命令,包括启动、修复、还原等系统命令 |
/srv | 网络服务启动后所需要的数据目录 |
/tmp | 放置用户或正在执行的程序暂时存放文件的目录,因此重要数据不要存放此处 |
/usr
usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源,此目录下的数据属于可共享不可变动的数据。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。
Linux 系统中,所有系统默认的软件都存储在 /usr 目录下,/usr 目录类似Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。系统建立最初,这个目录占用最多的硬盘容量。
/usr 目录下的部分子目录见下表:
目录 | 功能描述 |
---|---|
/usr/bin/ | 一般用户能够使用的所有命令存放于此 |
/usr/lib | 与/lib功能相同,所以/lib链接到此目录 |
/usr/local/ | 系统管理员在本机安装自行下载的软件,建议安装这个目录下 |
/usr/sbin/ | 非系统正常运行所需的系统命令,如网络服务器软件的服务命令(daemon) |
/sur/share/ | 主要放置一些只读的数据文件,包括共享文件,大部分为文本文件 |
/usrgames/ | 放置与游戏相关的数据 |
/usr/include/ | C/C++ 等编程语言头文件的放置目录 |
/usr/libexec/ | 放置某些不被用户常用的执行文件或脚本 |
/usr/lib<qual>/ | 与/lib<qual>/功能相同,所以/lib<qual>/链接到此目录 |
/usr/src/ | 一般源代码放在这里 |
/var
/var会跟随系统运行逐渐占用硬盘容量,放置经常性变动的文件,包括缓存、日志文件以及某些软件运行产生的文件。
/var 目录下的部分子目录见下表:
目录 | 功能描述 |
---|---|
/var/cache/ | 应用程序运行过程中产生的缓存 |
/var/lib/ | 程序本身执行的过程中需要使用到的数据文件放置的目录 |
/var/log/ | 放置日志文件的目录,相当重要 |
/var/mail | 放置个人电子邮箱的目录 |
/var/run/ | 某些文件或是服务启动后,它的PID放置于此 |
/var/spool/ | 放置一些队列数据,即排队等待其他应用程序使用的数据,这些数据使用完后通常会被删除 |
总结
了解了Linux的目录结构可以帮助更好的使用Linux系统,更合理的分配硬盘空间等,以上目录可以通过后续的与目录相关的命令操作来实践记忆。