Linux目录结构简介
在Linux系统中所有的内容都是以文件或目录的形式存放在根目录“/”下,根目录下的子目录又可以包含其它文件和子目录,不断向下延伸,这样就形成一个树形目录结构。
根目录“/”
在Linux系统中,最常见的根目录“/”结构如下所示:
├── bin -> usr/bin --二进制可执行命令
├── boot --开机所需文件—内核、开机菜单以及所需配置文件等
├── dev --包含设备结点的特殊目录,以文件形式存放所有设备与接口
├── etc --所有系统层面的配置文件
├── home --普通用户目录,每个普通用户都拥有一个单独子目录
├── lib -> usr/lib --包含有/usr/bin目录中的程序所用的共享库
├── lib64 -> usr/lib64 --包含有/usr/bin目录中的64位程序所用的共享库
├── lost+found --当文件系统发生错误时,将一些丢失的文件片段存放在这里
├── media --用于挂载设备文件的目录,在现在的Linux系统中,像U盘、CD等设备连接到计算机之后,会自动挂载到该目录下
├── mnt --临时挂载系统中的存储设备,也可用来永久挂载存储设置;与“/media”不同,系统不会自动将存储设备挂载到“/mnt”
├── opt --可用来放置外部或第三方软件
├── proc --在内存中保存系统内核、进程、外部设备及网络状态等信息
├── root --root用户的家目录
├── run --记录自Linux系统启动以来的系统信息
├── sbin -> usr/sbin --包含系统管理员使用的基本的系统命令
├── srv --服务数据目录;一些系统服务启动之后,可以在这个目录中保存所需要的数据
├── sys --类似于/proc,都是保存在内存当中,主要是保存一些和内核相关的信息
├── tmp --任何人均可使用的“共享”临时目录,系统重启时会清空数据
├── usr --在Linux系统中,“/usr”目录可能是最大的一个;它包含用户所需要的大部分程序和文件
└── var --主要存放动态文件,例如缓存文件、日志文件、用户邮件等
“/etc”目录
“/etc”目录下存放着各种系统配置文件,Linux系统依靠这些文件才得以正常运行。“/etc”目录下常用的内容举例如下:
/etc/group: 包含所有用户组的信息;
/etc/shadow: 包含用户的密码信息(只有root用户有访问权限);
/etc/fstab: 定义系统在启动时需要挂载的文件系统;
/etc/hosts: 定义本地主机名和IP地址的映射关系;
/etc/resolv.conf: 定义DNS服务器的地址;
/etc/network/interfaces: 定义网络接口的配置信息;
/etc/ssh/sshd_config: SSH服务的配置文件;
/etc/sudoers: 定义哪些用户可以使用sudo命令;
/etc/crontab: 定义系统中计划任务的执行时间表;
/etc/sysctl.conf: 系统内核参数配置文件;
/etc/default/grub: 定义系统启动菜单的配置文件;
/etc/logrotate.conf: 定义日志文件的轮换策略;
/etc/motd: 每次用户登录时显示的系统欢迎消息。
“/home”目录
“/home”目录是普通用户存放个人文件的默认目录。通常情况下,普通用户只能查看和编辑自己目录中的文件,而无法查看其他用户目录,除非他们有相应的权限。root用户有访问所有用户目录的权限。
当新用户被创建时,一个与用户名相同的子目录会自动在“/home”目录下创建。
“/opt”目录
“/opt”目录可用于安装第三方或独立的软件包。这个目录不是必需的,也没有特殊的规定用途,但是很多发行版建议开发者将应用程序安装到“/opt”目录中。
在实际使用中,用户自己安装的应用程序一般安装到“/usr/local”目录下,通过软件包管理器(例如yum、apt等)安装的应用程序默认出现在“/usr”目录下。
安装具体的应用程序时,可以根据业务需求来选择适合的安装路径。
“/proc”目录
“/proc”目录提供了对系统内核运行状态的访问,可以帮助我们查看和诊断系统状态。
“/proc”目录下的文件是在内核运行时动态生成的,它们不是真正的文件,而是内核提供的接口,因此不应该直接修改这些文件和目录。
“/proc”目录下常用的内容举例如下:“/proc”目录下的每个数字都对应着一个进程ID,例如“/proc/1”对应系统的init进程。
/proc/meminfo:包含了系统内存信息,例如总内存大小、可用内存大小、缓存大小、交换空间大小等;
/proc/net:包含了与系统网络相关的信息,例如连接状态、路由表、端口信息等;
/proc/sys:包含了众多内核参数,允许用户或进程通过读写文件来控制内核的行为;
/proc/<PID>:PID代表进程ID;包含了当前进程的各种信息,例如进程状态、进程所有权、进程映像(对应进程可执行文件)、进程环境变量、进程打开文件的列表等。
“/run”目录
“/run”目录包含了系统运行时的状态信息,例如各个进程运行时的socket、PID文件、lock文件等。“/run”目录下的文件是在系统运行时自动生成的,系统重启后通常会被删除。“/run”目录下常用的内容举例如下:
/run/user:用户级别的临时文件和信息;
/run/systemd:systemd服务运行时的信息,例如PID文件、socket和FIFO(Fist In First Out)管道等。
“/sys”目录
“/sys”目录包含了系统硬件和设备驱动的信息。“/sys”目录中的内容是在系统运行时动态生成,内容会随着硬件设备的改变而动态更新。“/sys”目录下常用的内容举例如下:
/sys/class:包含了所有类型设备的信息,例如USB、网络、声音、电源等设备;
/sys/devices:包含了系统中所有设备的信息,包括底层总线、芯片组、控制器、IO端口等;
/sys/fs:包含了文件系统信息,例如VFS、文件系统缓冲区、文件锁等;
/sys/kernel:包含了内核相关的信息,例如内核参数、版本、配置项等;
/sys/power:包含了系统能源管理的信息,例如电源管理、休眠模式等;
/sys/module:包含了内核模块相关的信息,例如已经加载的模块、模块参数等。
“/tmp”目录
“/tmp”目录是一个临时文件目录,用于存储系统和服务运行时需要的临时文件和信息,该目录下的文件在系统重启时会被删除。
“/tmp”目录的内容是在系统运行时动态生成的,其内容会随着系统的运行而动态更新。通常该目录下的临时文件并不需要长期保存,系统管理员会对其进行定期清理。
“/usr”目录
“/usr”目录非常重要,通常用于存放用户程序和系统软件包的相关信息;通常普通用户有权限读取“/usr”目录下的文件和子目录。“/usr”目录下常用的内容举例如下:
/usr/include:存放C和C++头文件;
/usr/lib:存放系统库文件,是程序运行所需的依赖库文件的存储目录;
/usr/local:通常作为用户自己安装的软件包的目录,默认情况下不会被软件包管理器使用;
/usr/sbin:存放只有root用户才可以执行的系统管理命令和服务相关的程序文件;
/usr/share:存放共享文件,例如系统自带的图标、帮助文件等;
/usr/src:存放应用程序或系统软件包的源代码文件。
“/var”目录
“/var”目录下的文件是在系统运行中动态生成的,例如日志文件、邮件、数据库、缓存等等;“/var”目录下的文件是长期保存的。“/var”目录下常用的内容举例如下:
/var/cache:存放应用程序的缓存文件;
/var/lib:存放应用程序的持久化文件,例如数据库文件;
/var/log:存放系统运行时的日志文件,包括了各种不同进程的日志,例如消息日志、内核日志、应用程序日志等等;
/var/mail:邮件存储目录,存放系统中的电子邮件;
/var/run:存放系统运行时的信息,例如系统启动时临时文件、PID文件等;
/var/spool:存放异步(打印、邮件等)任务的临时文件;
/var/tmp:存放系统的临时文件,有一定保存时限,但在系统重启时不会清空该目录。