一、Linux目录结构
注意:在较新的Linux发行版中,/bin、/sbin、/lib等目录通常已符号链接到/usr下,这也是图中用“->”表示的原因。
二、常见问题解答
1. /usr 是不是 “user” 的缩写?
很多人第一反应会以为是 user,但其实它是 Unix Software Resource 的缩写,意为“Unix软件资源”。
- 有些资料解释为
user program,这个说法不够准确。 - 从实际情况看,
/bin 和 /sbin 已经是 /usr/bin 和 /usr/sbin 的符号链接,说明 /usr 存放的是系统的核心软件资源,与普通用户的“家”没有直接关系。
理解这一点,有助于我们更准确地把握各个目录的定位。
2. 安装程序到底该装到哪里?
这取决于你用什么方式安装:
- 通过包管理器(yum/apt等)安装
- 手动编译安装或手动部署现在更推荐放在
/opt 目录下,比如 /opt/nginx、/opt/jdk。/opt 就是专门用来存放第三方手动安装软件的。以前很多人习惯放到 /usr/local/xxx,现在有了 /opt,这种做法已不再是首选。
3. etc 这个目录名是怎么来的?
etc 是 etcetera 的缩写,原意是“附加物”。
早期的Unix系统中,程序主要就是二进制文件,配置文件是作为“附加物”存在的,因此放在了 etc 目录下。
后来大家又给它赋予了新的解释:Editable Text Configuration(可编辑的文本配置)。不过不管怎么解释,我们只需要记住:/etc 是存放系统配置文件的地方就可以了。
4. 网站文件应该放在哪里?
按照Linux文件系统层次结构标准(FHS),Web网站、FTP服务、流媒体服务等服务的数据,应该放在 /srv 目录下。
例如:
但是!由于历史原因,Apache Web服务器默认将 /var/www 作为网站根目录,而且这个习惯已经沿用多年,导致大多数人至今仍然把网站文件放在 /var/www 下。严格来说,/var 更适合存放日志、缓存等变化频繁的数据,而 /srv 才是服务数据的“正统”位置。这一点在新标准中已经明确,只是历史惯性的力量确实很大。
三、最后的小建议
学习Linux目录结构,不要死记硬背。多结合使用场景,多问几个“为什么”,慢慢就会形成肌肉记忆。
如果你在配置服务时不确定文件该放哪,不妨优先参考FHS标准(Filesystem Hierarchy Standard),或者直接查看你所用发行版的官方文档。