目录总揽
/-
┠ bin, sbin 二进制可执行文件
┠ boot 启动相关
┠ dev 设备文件
┠ etc 配置文件
┠ home 用户家目录
┠ lib, lib64 库文件
┠ media, mnt 挂载点
┠ opt 可选应用程序
┠ proc 进程信息虚拟文件系统
┠ root root 用户的家目录
┠ run 运行时数据
┠ sbin 系统管理二进制
┠ srv 服务数据
┠ sys 系统信息虚拟文件系统
┠ tmp 临时文件
┠ user Unix 系统资源
┠ var 可变数据
根目录
\ 是一切的起点。 Linux 采用单根树形结构,所有文件和目录都从根目录开始往下延伸。 / 是整个文件系统的起点,也是绝对路径的开头。
二进制程序目录
/bin --- 基本命令二进制文件
存放系统最基本的可执行程序,所有用户都能使用。比如:
ls、cp、mv、cat、echo、rm等日常命令- 这些命令在系统启动早期就必须可用(甚至在挂载其他目录之前)
现代系统中,/bin 通常是指向 /usr/bin 的符号链接。
/sbin --- 系统管理二进制
存放系统管理员使用的命令,通常需要 root 权限。比如:
reboot、shutdown、ifconfig、iptables、fdisk- 这些命令主要用户系统维护和管理
现代系统中,/sbin 通常是指向 /usr/sbin 的符号链接。
/usr --- Unix System Resources (系统资源)
整个目录中最大的目录,可以理解为“用户程序和数据的大本营”。
重要的子目录:
/usr/bin:绝大多数用户命令的安装位置。通过包管理器(apt/yum)安装的程序,几乎都在这里。比如python、git、curl、wget等/usr/sbin: 非关键性的系统管理命令/usr/lib和/usr/lib64:程序运行所需的共享库文件(.so 文件)/usr/share:架构无关的数据文件。比如文档、图标、locale 语言包、时区数据等/usr/local:本地编译安装的软件的首选位置
/usr/local --- 本地安装的软件
手动编译安装或从源码构建的软件的推荐位置,不会和包管理器产生冲突。
典型结构:
/usr/local/bin:编译的程序/usr/local/lib:相关的库/usr/local/etc:相关配置
配置文件目录
/etc --- 系统级配置文件。
所有系统和应用程序的配置文件几乎都在这里。这是 Linux 中最重要、最需要熟悉的目录之一。
/etc/passwd:用户账户信息/etc/group:用户组的信息/etc/shadow:加密后的用户密码/etc/hosts:本地 DNS 映射/etc/nginx/:Nginx 的配置文件目录/etc/ssh/:SSH 服务配置/etc/systemd/:systemd 服务管理配置/etc/crontab:定时任务配置
改配置文件前先备份
用户相关目录
/home --- 普通用户的主目录
每个普通用户登录后,默认进入自己的主目录。
该目录特特点:
- 只有该用户和 root 能随意读写
- 存放用户的个人文件、下载内容、个人脚本
- 用户的 SSH 密钥(
~/.ssh/id_rsa) 也存放在这里 - 用户级的配置文件(如
~/.bashrc、~/.vimrc)
/root --- root 用户的主目录
root 用户的主目录不在 /home 下,而是直接在根目录下。这是出于安全和便利考虑 -- 即使 /home 所在的分区没有挂载, root 也能正常登录。
可变数据目录(经常变化的文件)
/var --- Variable Data (可变数据)
存放那些大小和内容会持续增长或变化的文件。也是服务器运维中最重要的目录之一。
关键子目录:
/var/log:系统日志和应用的日志。比如/var/log/nginx/access.log、/var/log/syslog、/var/log/auth.log/var/lib:程序运行时的持久化数据。比如数据库文件(/var/lib/mysql/)、Docker 数据(默认在/var/lib/docker)/var/spool:列队数据。比如打印列队、邮件列队/var/tmp:需要保留较长时间的临时文件(重启后不删除)/var/cache:应用程序的缓存数据/var/run(现在通常是/run的符号链接):存放运行时 PID 文件、 socket 文件等
设备与硬件相关
/dev --- Device File (设备文件)
Linux 中一切皆文件,硬件设备在 /dev 下表现为特殊的文件。
常见的设备文件:
/dev/sda、/dev/sdb:硬盘设备/dev/null:黑洞设备,写入的数据直接丢弃(常用于屏蔽输出)/dev/zero:无限零字节流/dev/random、/dev/urandom:随机数生成器/dev/tty:终端设备
/proc --- Process Information (进程信息虚拟文件系统)
这是一个伪文件系统,不占用磁盘空间,而是内核动态生成的。它反映了当前系统的运行状态。
关键文件:
/proc/cpuinfo:CPU 信息/proc/meminfo:内存信息/proc/version:内核信息/proc/[pid]/:每一个正在运行的进程都有一个以 PID 命名的文件/proc/loadavg:系统负载
/sys --- System information (系统信息虚拟文件系统)
和 /proc 类似,也是一个虚拟文件系统,主要用户导出内核对象(如设备、驱动、内核参数)的信息,方便用户空间程序访问和配置。
启动相关
/boot --- Boot Loader Files (启动加载器文件)
存放系统启动所需的关键文件:
- 内核镜像文件( 如
vmlinuz-xxx) - 初始内存磁盘镜像(
initrd.img-xxx) - GRUB 启动菜单配置(
/boot/grub/) - 系统启动的第一阶段就依赖该目录
**千万不要随意删除这里的文件!**否则系统可能无法启动
挂载点目录
/mnt --- Mount (临时挂载点)
用户临时挂载文件系统。比如插了个 U 盘或外接硬盘,可以手动挂载到 /mnt/usb 这样的子目录。
/media --- Media (可移动介质挂载点)
现代 Linux 桌面系统会自动把光盘、U 盘等可移动设备挂载到这里,通常会创建以设备名为名的子目录。
/srv --- Service Data (服务数据)
存放系统对外提供所用到的数据。根据 FHS, Web 服务器的数据可以放到这里,比如 /srv/www/、 /srv/ftp/ 等。不过在实际使用中, /var/www 更常见。
临时文件
/tmp --- Temporary Files (临时文件)
所有用户都可以读写。系统重启后,里边的内容通常会清空。
适合存放临时下载的文件、编译中间产物等不需要永久保存的数据。
/run --- Runtime Data (运行时数据)
存放系统启动后产生的运行时信息,如 PID 文件、 Socket 文件、锁文件等。现代系统中, /var/run 通常指向 /run 的符号链接。