Linux系统目录树
上述目录的使用如果没有一定是规则和方式,会给后续开发与运维增加无谓的工作量,因此在Linux系统中通常会使用FHS标准管理目录
FHS标准
该标准明确的每个特定的目录下应该存放什么文件与数据,并希望Linux用户遵循该规则
- 根据文件系统使用的频繁与否以及是否允许用户随意改动,将目录定义为四种交互类型:
(1)可分享的,即可以分享给其他系统挂载使用的目录;
(2)不可分享的,与自身机器直接相关的设备文件,或是与程序相关的socket文件等;
(3)不变的,数据不会经常变动的,跟随发行版而不变动;
(4)可变的的,经常修改的数据,如日志文件
FHS针对目录树架构着重强调了三个目录下的内容定义: - 根目录(/):与启动系统相关
- /usr:与软件安装或执行有关
- /var:与系统运行过程有关
根目录
根目录是Linux系统的最高层目录,是整个目录树的根节点,同时也与启动、还原、系统修复等操作有关,若系统出现错误,根目录中必须要包含有能够修复文件系统的程序。
FHS建议根目录所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在一个分区,保持根目录越小越好。
鉴于以上的说明,FHS根目录下面应该要有下面这些子目录的存在:
- /bin:放置执行文件/命令的目录,尤其是放置在单用户维护模式下还能够被操作执行的命令。
- /boot:放置开机会使用到的文件,包括Linux 内核文件以及开机菜单与开机所需配置文件等。
- /dev:以文件的形式保存 Linux 所有的设备及接口设备。
- /etc:系统主要配置文件基本上都在这个目录下,包括人员账号密码文件、多种服务的起始文件等。
- /home:系统默认的普通用户的主文件夹。
- /lib:主要放置系统开机使用的、/bin 和 /sbin 目录下的命令使用的库函数。
- /media:放置可删除的设备。
- /mnt:用于暂时挂载某些额外设备。
- /opt:第三方软件放置的目录。
- /proc:这个目录是一个虚拟文件系统,它放置的数据都是在内存当中,例如进程、外部设备状态、网络状态等。
- /root:root 用户的主目录。
- /sbin:该目录下放置开机过程中需要的命令,包括开机、修复、还原系统等。
- /srv:该目录放置与网络服务相关的文件数据
- /sys:这个目录是一个虚拟文件系统,主要记录与内核相关的信息,与 /proc录十分相似。
- /tmp:让一般用户或者正在执行程序暂时放置文件的地方。
/usr目录
usr 其实是 UNIX Software Resource 的全称,即 UNIX 操作系统软件资源。FHS 建议所有软件开发者都应该将数据合理地放置到这个目录的子目录下。一般来说,/usr 下的子目录有:
/usr/bin/:绝大部分的用户命令都在此处,它与/bin目录的区别在于后者存放与开机相关的命令。
/usr/include/:C/C++的头文件和包含文件。
/usr/lib/:包含各应用软件的函数库、目标文件,以及一些不被用户惯用的执行文件。
/usr/local/:系统管理员在本机自行下载的软件。
/usr/sbin/:非系统正常运行需要的系统命令。
/usr/share/:放置共享文件的地方
/usr/src/:源码放置的地方
/var 目录
/var 目录下主要放置常态化变动的文件,例如缓存、登录日志文件、软件运行产生的文件等。/var 下的子目录常见有:
/var/cache/:应用程序运行过程中产生的暂存文件。
/var/lib/:应用程序运行过程中,需要使用到的数据文件放置的目录。
/var/lock/:某些设备或文件要求使用时具有排他性,即上锁,该目录存放这类设备文件。
/var/log/:日志或登录文件放置的目录。
/var/mail/:放置个人电子邮件的目录。
/var/run/:某些程序或者是服务启动后,将它们的 PID 记录在这个目录下
/var/spool/:这个目录通常会放置一些队列数据,包括等待收寄的电子邮件、cron 任务等。