文章目录
- 前言
- 标准目录结构
- / (根目录)
- /bin
- /boot
- /dev
- /etc
- /home
- /lib
- /media
- /mnt
- /opt
- /run
- /sbin
- /srv
- /tmp
- /proc
- /sys
- /var
- /lost+found
- /root
- /usr
前言
Linux操作系统中的目录(文件夹)结构遵循Linux基金会定义和维护的Linux文件系统层次标准(FHS)。有了定义良好的标准,用户和软件开发人员就可以更容易地知道已安装的二进制文件、系统文件、系统信息等的位置。通过这种方式,Linux应用程序不必为特定的发行版量身定制,而是可以普遍使用。
标准目录结构
如下图,左侧/为根目录,连接着boot, bin, sbin等目录,其中usr有多个子目录,虚线说明两目录为软连接(快捷方式)关系。
/ (根目录)
这是Linux文件系统层次结构的开始。所有的文件路径都起源于根目录。
上面列出的目录或指向这些目录的符号链接在/中是必需的,否则,文件结构就不符合FSH。
/bin
存储系统管理员和用户都可以使用的基本命令二进制文件,如cat,ls,mv,ps,mount等。
这些命令用于引导系统(访问引导文件、挂载驱动器),并且可以在/usr中的二进制文件不可用时修复系统。
/boot
此目录包含系统启动所需的所有文件。
这包括内核文件,initrd, initramfs, bootloader等。
/dev
包含系统中挂载的所有物理和虚拟设备的设备文件。
设备文件不是传统意义上的文件。它们是设备驱动程序访问并与所述设备交互的一种方式。
通常,主存储称为sda (/dev/sda)
/etc
此目录包含系统的配置文件。
设备名称、密码、网络配置、DNS、crontab、日期和时间等都存储在配置文件中。
根据FHS,该目录不能包含任何二进制可执行文件。
这些配置文件影响系统上的所有用户。如果您想对特定用户进行配置更改,应该使用~/.conf/而不是/etc/
常见/etc目录下的配置文件:
/etc/bashrc 用来定义系统范围内的函数和别名
/etc/crontab 计划任务的配置文件
/etc/fstab 记录系统中开机启动时所要自动挂载的相关文件系统列表
/etc/group 记录系统用户组的基本信息
/etc/gshadow 记录用户组密码
/etc/hosts 记录主机名和ip
/etc/issue 用户在登陆系统前显示的信息
/etc/passwd 用户的基本信息
/etc/shadow 用户的密码信息
/etc/login.defs 设置用户账号的设置信息,在添加新用户时根据这个文件生成相应的显示内容
/etc/skel 添加新用户时将此目录中拷贝/home中并修改目录名为用户名
/etc/profile 每个用户的环境变量信息
/etc/profile.d 包含/etc/pfofile中需要执行的脚本
/etc/ssh ssh服务配置文件
/et/yum.repos.d yum仓库配置文件目录
/home
主页包含所有个人用户特定的文件。它为每个用户包含独立的目录,可以通过cd /home/username访问。
这是你大部分工作的地方。你系统上所有的下载、图片、音乐等都在/home目录下。
每个应用程序的特定于用户的配置文件可以在/home/[username]/.conf中找到。
可以通过执行cd ~[username]进入任何用户的主目录。如果系统上只有一个用户,那么使用cd ~就可以。
/lib
库是定义编程语言中使用的命令的标准代码文件。在编译过程中,编译器会查找这些库来理解代码,就像我们在读书时查找字典来理解句子的意思一样。
这个目录包含启动系统所需的所有库,以及/bin和/sbin中要运行的命令。它还包含控制大量硬件和设备功能的内核模块。
很多时候,不同的32位和64位库具有相同的名称。为了避免任何串通,这些二进制文件被保存在两个独立的目录中,分别命名为/lib32和/lib64。
/media
此目录包含几个子目录,系统在其中挂载可移动设备(如USB驱动器)。
/mnt
用户可以使用该目录手动挂载设备(与仅由系统使用的/media相对)。
当前用户之间的惯例是在/mnt下创建一个单独的子目录,并将设备挂载在该子目录中,而较老的传统是将设备直接挂载在/mnt中。
/opt
/opt包含与包相关的库和二进制文件,它们不是由系统的包管理器安装的,而是通过第三方的方式安装的。
/opt是/usr/local的一个不太受欢迎的替代方案。是供应商决定库和二进制文件的去向,但通常更单一和专有的软件。
/run
此目录包含自引导后的设备和元数据。
这包括当前会话中执行的所有系统进程和守护进程的数据。
在引导过程开始时,该目录下的文件被清除(删除或截断)。
/sbin
就像/bin一样,/sbin也包含必要的系统二进制文件。但是,这些二进制文件仅供系统管理员而不是普通用户使用。
这些二进制文件主要用于设备管理。例如,fdisk, fsck, mkfs, ifconfig, reboot。
/srv
只有当你的设备作为网络服务器时,你才会使用这个目录,因为这个目录包含了所有关于网络服务器的文件。
例如,如果主机有一个FTP连接,所有需要共享的文件默认应该在/srv/ FTP目录下。
/tmp
包含当前运行进程的临时文件。
每次引导后也会刷新此数据。
/proc
就像/dev提供作为文件的设备一样,这个文件夹包含作为文件的系统信息和内核信息。
这包括内存、分区、硬件(电池、温度等)、所有加载的内核模块等信息。
/sys
它包含类似于在/proc/中保存的信息,但是显示关于热插拔设备的特定设备信息的层次视图。
/var
包含有关正在运行的进程的可变数据。
这包括所有应用程序的日志、缓存和线轴。
线轴是等待进一步处理的数据。例如,在打印机队列中等待的文档或等待发送的电子邮件头。
/lost+found
虽然没有列在FHS中,但该目录是由fsck自动生成的,ext4特有的。
它将所有孤立的和损坏的文件存储在这个文件夹中。
这包括因为断电而无法保存的文件,由于升级过程失败而损坏的文件等等。
/root
root用户的家目录。root登录后便进入到该目录,普通用户无法访问。
/usr
/usr目录有一个非常有趣的起源。在创建时,它的作用应该类似于/home目录,但当人们在/bin上用完空间时,他们开始将非必要的二进制文件存储在/usr中。
随着时间的推移,这个目录已经被用来存储用户安装的应用程序的二进制文件和库。例如,bash在/bin中(因为它可以被所有用户使用),fdisk在/sbin中(因为它应该只被管理员使用),而用户安装的应用程序,如vlc在/usr/bin中。
总之,/usr就是应用系统的存储目录。