2、Linux目录结构详解:根目录、/home、/etc、/var、/usr、/opt等核心目录的作用

2.1 根目录(/)——一切从这里开始

Linux的目录结构,说白了就是一棵倒挂的树。根目录/就是这棵树的根。我刚开始接触Linux时,最困惑的就是为什么没有C盘、D盘。后来才明白,这种设计其实更优雅。

根目录是所有文件和目录的起点。你执行ls /,看到的那些目录,每一个都有它存在的意义。我记得有一次,一个新手同事不小心把/目录权限改成了777,结果整个系统差点崩了。嗯,这里要提醒大家:永远不要随意修改根目录的权限。

核心要点:根目录是文件系统的起点,所有路径都是从/开始的绝对路径。

2.2 /home——用户的私人领地

/home目录,说白了就是每个用户的“家”。你想想看,每个用户登录后,默认就在自己的家目录里。比如用户zhangsan,他的家目录就是/home/zhangsan。

我个人习惯把项目代码、配置文件都放在家目录下。这样做的好处是:用户隔离。A用户删了文件,不会影响到B用户。我曾经遇到过一台服务器,所有用户都把文件丢在/tmp下,结果系统一重启,文件全没了……那叫一个惨。

  • 用户家目录命名规则:/home/用户名
  • 默认权限:700(只有用户自己能访问)
  • 常见子目录:Desktop、Downloads、Documents等
小技巧:用cd ~或cd $HOME可以快速回到自己的家目录。

2.3 /etc——系统的“命根子”

/etc目录,我愿称之为Linux的“命根子”。为什么这么说?因为几乎所有系统级别的配置文件都放在这里。从网络配置到用户密码,从服务启动脚本到软件源列表,全在/etc里。

我记得有一次排查一个DNS解析问题,折腾了半天,最后发现是/etc/resolv.conf文件里写错了DNS服务器地址。你想想看,就这一个文件,能让整个网络瘫痪。

文件/目录 作用
/etc/passwd 用户账户信息(用户名、UID、家目录等)
/etc/shadow 用户密码哈希值(权限更严格)
/etc/group 用户组信息
/etc/fstab 文件系统挂载表(开机自动挂载)
/etc/hosts 主机名与IP地址的静态映射
/etc/resolv.conf DNS服务器配置
/etc/ssh/sshd_config SSH服务配置
警告:修改/etc下的文件前,一定要备份!我曾经手滑改错了/etc/sudoers,结果sudo命令全废了,只能进单用户模式修复。

2.4 /var——存放“变化”的地方

/var,全称是variable,意思是“可变的”。这个目录专门存放那些会不断增长、变化的文件。比如日志文件、数据库文件、邮件队列等。

我个人最关注的是/var/log目录。系统出问题时,第一反应就是去看日志。你想想看,/var/log/messages、/var/log/secure、/var/log/nginx/access.log……这些文件里藏着系统运行的所有秘密。

  • /var/log:系统日志文件
  • /var/spool:任务队列(如邮件、打印任务)
  • /var/tmp:临时文件(重启后保留,区别于/tmp)
  • /var/lib:应用程序状态数据(如数据库、RPM包信息)
避坑指南:我曾经遇到过一台服务器因为/var/log日志文件太大,把磁盘撑满了,导致数据库直接宕机。从那以后,我养成了两个习惯:一是配置日志轮转(logrotate),二是监控磁盘使用率。

2.5 /usr——用户软件资源的“大本营”

/usr,全称是Unix System Resources,但很多人误以为是User。这个目录是系统软件资源的主要存放地。你安装的大部分软件、库文件、文档都在这里。

我习惯把/usr想象成Windows的C:\Program Files。但Linux的设计更合理:/usr/bin放可执行文件,/usr/lib放库文件,/usr/share放共享数据。

子目录 作用
/usr/bin 用户可执行命令(如vim、gcc、python)
/usr/lib 库文件和内核模块
/usr/include C/C++头文件
/usr/share 架构无关的共享数据(如man手册、图标)
/usr/local 本地安装的软件(编译安装时常用)
经验之谈:如果你自己编译安装软件,建议放在/usr/local下。这样系统包管理器管理的软件在/usr下,你自己装的软件在/usr/local下,互不干扰。

2.6 /opt——第三方软件的“专属包厢”

/opt,全称是optional,用于安装第三方商业软件或大型软件。比如Oracle数据库、Google Chrome、一些商业IDE等,都喜欢装在这里。

为什么这些软件偏爱/opt?因为/opt目录的设计理念是:每个软件一个子目录,互不干扰。比如Oracle会装在/opt/oracle,Chrome会装在/opt/google/chrome。

我个人觉得,/opt的好处是卸载方便。想删掉某个软件?直接rm -rf /opt/软件名就行了,不用担心残留文件散落在系统各处。

对比一下:
  • /usr:系统包管理器管理的软件(yum/apt安装的)
  • /usr/local:自己编译安装的软件
  • /opt:第三方商业软件或大型软件

2.7 其他重要目录一览

除了上面这些核心目录,还有几个目录也值得了解:

  • /boot:存放内核和启动引导文件。我建议不要动这个目录,搞不好系统就起不来了。
  • /dev:设备文件。Linux把硬件设备都抽象成了文件,比如/dev/sda代表第一块硬盘。
  • /proc:虚拟文件系统,存放内核和进程信息。你执行ps命令时,其实就是在读/proc。
  • /tmp:临时文件目录。重启后会被清空,别把重要文件放这里。
  • /mnt和/media:挂载点。临时挂载U盘、光盘等设备。
再次提醒:不要随意删除/proc、/sys、/dev这些虚拟文件系统中的文件。它们不是真实存在的文件,删了也没用,反而可能让系统崩溃。

2.8 总结一下

Linux的目录结构,说白了就是一套约定俗成的规矩。你遵守它,系统就稳定;你乱来,系统就给你颜色看。我个人建议,刚开始学Linux时,多花点时间理解这些目录的作用。磨刀不误砍柴工嘛。

最后送大家一句话:目录结构是Linux的骨架,理解了它,你就掌握了Linux的一半。