2. Linux目录结构详解
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的一半。