Linux系统目录结构详解与最佳实践
1. Linux系统目录结构概述作为一名Linux系统管理员理解文件系统目录结构是基本功。Linux采用树状目录结构所有文件和目录都从根目录/开始延伸。这种设计理念源于Unix哲学一切皆文件使得设备、进程、网络连接等都以文件形式存在于目录树中。在红帽企业版6RHEL6中根目录下通常包含20个左右的子目录。每个目录都有其特定用途这种标准化布局被称为文件系统层次结构标准FHS。掌握这些目录的功能能让你在系统维护时快速定位文件理解系统工作原理。注意不同Linux发行版的目录结构可能略有差异但核心目录基本一致。本文以RHEL6为例其他发行版可参考使用。2. 核心系统目录详解2.1 基础命令与库文件/bin目录存放着最常用的基础命令如ls、cp、mv等。这些命令在单用户模式下也必须可用因此/bin下的命令都是静态链接或使用/lib中的基础库。/lib目录包含系统最基本的共享库文件相当于Windows的DLL文件。例如libc.so.*C语言标准库ld-linux.so.*动态链接器libm.so.*数学运算库实操技巧使用ldd /bin/ls命令可以查看ls命令依赖的共享库这在排查command not found问题时很有用。2.2 系统配置目录/etc目录是系统配置的核心所在包含/etc/passwd用户账户信息/etc/shadow加密后的用户密码/etc/group用户组信息/etc/fstab文件系统挂载配置/etc/ssh/sshd_configSSH服务配置重要提示修改/etc下的配置文件前务必先备份错误的配置可能导致系统无法启动。2.3 设备与挂载点/dev目录包含设备文件Linux通过这些特殊文件访问硬件/dev/sda第一块SCSI/SATA硬盘/dev/ttyS0第一个串口/dev/null空设备黑洞/media和/mnt都是挂载点目录/media自动挂载可移动设备U盘、光盘等/mnt临时手动挂载文件系统经验分享在/mnt下创建子目录如/mnt/nfs来挂载网络存储比直接挂载到/mnt更规范。3. 关键功能目录解析3.1 用户空间与系统管理/home是用户主目录所在地每个用户拥有独立的子目录如/home/alice。建议将用户数据集中存放在此便于备份和管理。/root是超级用户的主目录与普通用户的/home分离这是出于安全考虑。/sbin包含系统管理命令如fdisk磁盘分区工具ifconfig网络接口配置shutdown关机命令3.2 系统运行与临时文件/var存放经常变化的文件/var/log系统日志/var/spool打印队列、邮件等/var/wwwApache默认网站目录/tmp是全局可写的临时目录系统重启时会清空。建议应用在此创建子目录而非直接使用/tmp。安全提示定期清理/var/log下的旧日志可使用logrotate工具自动化此过程。3.3 特殊文件系统/proc是虚拟文件系统提供内核和进程信息/proc/cpuinfoCPU信息/proc/meminfo内存使用情况/proc/[pid]特定进程的详细信息/sys也是虚拟文件系统用于与内核交互/sys/class/net网络接口信息/sys/devices设备树/sys/module已加载模块4. 其他重要目录说明4.1 软件安装目录/usr是最大的目录之一包含/usr/bin非关键用户命令/usr/lib应用程序库文件/usr/local本地编译安装的软件/usr/share架构无关的共享数据/opt用于安装第三方商业软件如Oracle数据库通常会安装到/opt/oracle。4.2 系统启动相关/boot包含启动所需的文件vmlinuz-*压缩的内核镜像initramfs-*.img初始内存文件系统grub/GRUB引导加载程序配置故障排查当系统无法启动时可以检查/boot目录下的文件是否完整特别是内核和initramfs文件。4.3 安全相关目录/selinux包含SELinux安全策略文件/selinux/enforceSELinux强制模式开关/selinux/policy当前加载的策略/cgroup是控制组文件系统用于资源限制/cgroup/cpuCPU时间分配/cgroup/memory内存使用限制5. 目录管理最佳实践5.1 权限管理建议/etc、/boot、/sbin等关键目录应限制普通用户写权限/tmp应设置粘滞位chmod t /tmp防止用户删除他人文件/var/log应仅允许root和特定系统账户写入5.2 磁盘空间规划合理的分区方案示例/10-20GB系统文件/boot500MB-1GB启动文件/home根据用户数据量分配/var单独分区防止日志填满根分区swap物理内存的1-2倍5.3 常见问题解决当出现no space left on device错误时可依次检查df -h查看各分区使用情况du -sh /*找出占用空间大的目录清理/var/log、/tmp等目录的旧文件对于command not found错误检查命令是否在PATH环境变量包含的目录中使用whereis或which定位命令位置确认所需的共享库是否完整ldd命令掌握Linux目录结构是系统管理的基础。在实际工作中我建议新手管理员定期使用tree -L 1 /命令查看目录结构阅读FHS标准文档Filesystem Hierarchy Standard在测试环境中尝试创建、移动目录观察系统行为养成记录目录用途的习惯建立自己的知识库