前言
初学 Linux 总是好奇 Linux 系统下各个文件夹为什么这么命名,它们的用途是什么。本文主要介绍 Linux 下各文件夹的结构和用途说明。
文件颜色
一般人性化点的 Shell 都会有文件的不同颜色显示。下图为 Linux 下不同颜色的文件代表的含义。比如可执行文件显示绿色,目录显示蓝色,链接文件显示浅蓝色等
FHS
Linux 有专门的指导文件系统的标准,叫做 FHS(全称 Filesystem Hierarchy Standard)。Linux 所依赖的文件系统,有两个基本的概念:
1 | shareable / unshareable (共享性) |
对于可分享(shareable)的文件系统,FHS 规定:可分享文件能够被存放在一台将被多个用户同时访问的主机上,通常情况下,当一个系统所需的所有文件都存放在一台外部主机上时,可以方便的挂载一个或很少几个目录来使这些文件可用。但是,并不是在文件系统架构中的所有文件都是可分享的,所以每个系统都至少需要一处能够存放不可共享文件的本地空间。
对于静态(static)文件系统,FHS 规定:静态文件需要与动态文件隔离,因为,不同于动态文件,静态文件可以存放在只读介质上(而动态文件不可以),并且不需要和动态文件一起备份。
FHS 中关于特定文件夹用途和所需包含内容的规定:
1 | /bin: Essential user command binaries (for use by all users) |
/bin
/bin
,binary 的简称。该目录下为二进制的可执行文件,显示为绿色。包含了引导启动所需的命令或普通用户可使用的命令。多是系统中重要的系统文件
比如说根目录/bin
下都是些常用命令的执行文件,再比如说 Tomcat 的bin
目录下有一些运行脚本,有 Linux Shell 执行的.sh
结尾的文件,也有 Windows 执行的.bat
结尾的文件
1 | $ ls /bin/ |
/sbin
/sbin
,System binaries 的简称。存放系统管理员以及其他需要root权限来运行的工具
1 | $ ls /sbin/ |
/usr
/usr
是文件系统中第二大主要部分,其中存放了可分享的、只读的数据(即可分享性,静态性数据)。这说明/usr
文件系统需要能够在各种不同的兼容 FHS 系统的之间可共享,并且不可被修改。任何依赖于平台或者需要改写的数据,都应该存放在其它位置
/usr/bin
集中了几乎所有用户命令,比如man、info
系统自带或者git、docker
这种后来安装的三方软件的命令
/usr/sbin
包括了多数服务程序需要管理员权限的命令,比如mysqld、sshd
/usr/local
,本地安装的软件和其他文件都可以放在这里
/lib
/lib
,Libraries 的简称。库文件,存储文件运行需要的依赖库。不如 Tomcat 是基于 Java 的,它的lib
目录下包含了一些依赖 Jar 包
1 | $ ls /usr/local/tomcat9/lib |
/etc
/etc
这个文件夹很有意思,也是最开始困扰我很久的,因为它里头什么都有…其实它取名就是取自”等等”的缩写词 etc. 存放着系统以及各种程序的配置文件
1 | $ ls -F /etc |
早期 UNIX 系统中,对于/etc
,贝尔实验室的解释是:etcetra directory(or etc.) 。表示其他、等等什么的,其实就是用来放不能归类到其他目录中的内容,所以比较杂乱。后来 FHS 规定用来放配置文件,就解释为:Editable Text Configuration 或者 Extended Tool Chest
/var
/var
,Variable 的简称,多用于存放动态变化的文件。也用于某些大文件的溢出区,比如各种服务的日志文件
1 | $ ls /var/backups |
/var/run
中包含了进程的ID以及动态生成的配置文件等,比如连接网络时自动生成的/var/run/resolvconf/resolv.conf
域名解析服务器的配置信息,其实/etc/resolv.conf
文件就是链接到此文件
/root
/root
目录是root
用户的用户目录,~
代表当前用户的用户目录,普通用户的目录在/home
下,比如我通过su s1mple
切换到 s1mple 用户,用户目录为/home/s1mple
1 | root@ubuntu-server:~# pwd |
其他
/opt
,Optional application software packages 代表你可以在该目录下安装第三方软件,和/usr/local
的作用相似
/dev
,device 的简称,该目录存放设备文件,即设备驱动程序,用户通过这些文件访问外部设备。比如,用户可 以通过访问/dev/mouse
来访问鼠标的输入,就像访问其他文件一样
/tmp
,temporary 的简称,目录存放程序在运行时产生的临时数据,注意:/var/tmp
比/tmp
允许更大的或需要存在较长时间的临时文件
/proc
,虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息,比如/proc/cpuinfo