Reference
- 详细说明链接 https://blog.csdn.net/weixin_40921797/article/details/81664453
- 鸟哥的Linux私房菜·基础学习篇(第三版) 第六章 Linux的文件权限与目录配置
Linux的文件系统与挂载的概念
文件系统与目录树的关系(挂载)
- 所谓的"挂载"就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下:也就是说,进入该目录就可以读取该分区的意思。这个操作我们称为"挂载",那个进入点的目录我们称之为"挂载点"
Linux目录配置标准 FHS(Filesystem Hierarchy Standard)
FHS官方文件地地址:https://www.pathname.com/fhs/
|
可分享的(shareable) |
不可分享的(unshareable) |
不变的(static) |
/usr(软件放置处) |
/etc(配置文件) |
|
/opt(第三方软件) |
/boot(开机与内核文件) |
可变的(static) |
/var/mail(用户邮箱信箱) |
/var/run(程序相关) |
|
/var/spool/news(新闻组) |
/var/lock(程序相关) |
Linux的几个关键目录 root(/) /usr /var
- / 根目录 与系统的开关机有关
- /usr (UNIX software resource) 与与软件的执行与安装有关
- /var(variable) 与系统运作过程有关
Linux根目录下文件结构

目录 |
应放置的文件内容 |
/bin |
特殊的可执行文件目录 存放在单用户维护模式下依旧能够被操作的命令,一般可以被root与普通用户共用。(bin = binaries 二进制文件) |
|
bin是binary的缩写,是UNIX类操作系统中根目录的标准子目录,包含可执行的程序(即准备运行的程序),以便达到启动(即启动)和修复系统的最小功能。进入该目录可以看到许存放有很多常用的命令如 mv cat chmod ls等等等等。 |
|
/bin是系统默认的路径,它是系统发出命令时搜索相应程序的目录列表。这意味着,只要在命令行中输入文件名,然后按下Enter键,就可以运行/bin中的对应的可执行文件(即,可运行程序)从而达到我们执行命令完成对应功能的操作。 |
/boot |
/boot目录存储在内核开始执行用户模式程序之前使用的数据。这可能包括冗余备份(备份)主引导记录、扇区/系统映射文件、内核和其他重要的引导文件和手工不直接编辑的数据。使用grub引导装载程序会生成/gurb这个文件。 Linux kernel常用的文件名为vmlinuz |
/cdrom |
|
/dev |
dev是device(设备)的缩写。是Linux内核的设备管理器。作为devfsd和热插拔的继承者,udev主要管理/dev目录中的设备节点。一切设备皆为文件 访问某个文件相当于访问某个设备 |
|
/dev/null; /dev/zero; /dev/tty/; /dev/lp*; /dev/hd* ; /dev/sd* |
/etc |
etc目录用来存放系统管理所需要的配置文件和子目录。系统主要的配置文件都在这个目录里。只有root有修改权限。不建议在此存放可执行文件(etc原本是etcetera的缩写 意思是附加物 与bin(binaries相对应)) |
|
一个“配置文件”要被定义为用来控制程序操作的本地文件;它必须是静态的,不能是可执行二进制文件。因此,定期备份这个目录是个好主意。如果您重新安装或丢失当前的安装,它肯定会为您节省大量的重新配置时间。 |
/home |
用户主文件夹 符号~表示当前用户的主文件夹 |
/nitrd.img |
|
initrd.img.old |
|
/lib |
系统的函数库之一。存放在/bin或者/sbin下命令会用到的函数库。是内核模块和系统最基本的动态链接共享库,其作用类似于Windows里的.dll文件。几乎所有的应用程序都须要用到这些共享库,是二进制文件。它们对于基本系统功能是必不可少的。 |
/lib64 |
|
/lost+found |
使用标准的ext2/ext3文件系统格式才会产生的一个目录。文件系统发生错误时,一些丢失的片段会放置到这个目录下,一般在分区的最顶层 |
/media |
媒体外设临时挂载在此处 一些可删除设备的挂载点 |
/mnt |
在/media出现之前作为临时外设的挂载点 |
/opt |
第三方软件放置目录。 |
|
这个目录是为所有不属于默认安装的软件和附加包保留的。因为要遵守FSSTND,所有第三方应用程序都应该安装在这个目录中。在这里安装的任何包都必须找到它的静态文件(如:额外的字体、剪贴板、数据库文件)必须将其静态文件定位在单独的opt的目录树中。 |
/proc |
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息(系统内核 进程 外部设备状态 网络状态等等)。(放置的数据都在内存当中,本身不占用硬盘空间)通常,它是由系统自动安装的,而且大多数文件是只读的。 |
/root |
系统管理员的主文件夹。作为系统的拥有者,它的特权就是单独拥有一个目录。 |
/run |
|
/sbin |
s是super/system 的意思,/sbin是Linux和其他UNIX类操作系统中root目录的标准子目录,包含可执行程序(即准备运行)程序,也就是说这里存放的是系统管理员使用的管理程序。比较多的情况下是用来设置系统环境的 |
/snap |
|
/srv |
"Service",是一些网络服务启动后,这些服务需要取用的数据目录。比如WWW FTP等。 |
|
srv包含由该系统服务的站点特定数据。指定这一点的主要目的是使得用户可以找到针对特定服务的数据文件的位置,从而可以合理地放置需要单个树用于只读数据、可写数据和脚本(例如CGI脚本)的服务。只对特定用户感兴趣的数据应该进入用户的主目录 |
swapfile |
|
/sys |
类似于/proc 也是虚拟的文件系统 记录与内核相关的信息,包括目前已经加载的内核模块与内核检测到的硬件设备信息等等。同样不占用硬盘 |
/tmp |
正在执行的程序暂时存放文件的地方 访问权限对所有人开放 定时清理是个好习惯 |
vmlinuz |
|
vmlinuz.old |
|
/usr目录 |
应放置的文件内容 |
/usr/bin |
绝大部分用户可使用的命放在此处 与/bin的区别在于这里与开机过程无关。 |
|
(apt命令的默认安装路径在此)(apt自己也装在这里) |
/usr/games |
|
/usr/include |
C/C++等程序语言的头文件(header)与包含文件(include)放置处,当我们以tarball方式(*.tar.gz的方式安装软件)安装某些数据时,会使用到这个文件下很多的包含文件 |
/usr/lib |
包含各个应用软件的函数库,目标文件,以及不被一般用户惯用的执行文件或者脚本 |
/usr/libexec |
|
/usr/local |
系统管理员在本机自行安装自己下载的软件(非distribution默认提供者)建议安装到此目录;该目录下同样具有bin etc include lib这类子目录 |
/usr/sbin |
非系统正常运行所需要的系统命令。最常见的是某些网络服务软件的服务命令 |
/usr/share |
|
/usr/src |
一般的原码都存在这里 src=source |
/var目录 |
应放置的文件内容 |
/var/cache |
程序运行本身产生的一些暂存文件 |
/var/lib |
程序本身执行的过程中 需要使用到的数据文件放置的目录。在此目录下各自的软件应该要有各自的目录。 |
|
eg /var/lib/mysql/ /var/lib/rpm |
var/lock |
某些设备或者说文件资源一次只能被一个应用程序所使用,如果有两个程序同时使用该设备,就会出错,因此需要lock上 |
var/log |
登录文件放置的目录。里面比较重要的文件有./messages; ./wtmp这类 |
var/mail |
放置个人电子邮件信箱的目录 通常与/var/spool/mail互相为连接文件 |
var/run |
存放某些程序或者服务启动后的PID |
var/spool |
存放队列数据 即排队等待其他程序使用的数据 |

$PATH 执行文件的路径变量
以执行ls
命令为例,系统会根据环境变量PATH的设置,去每一个PATH中寻找这一特定的可执行文件,如果在PATH定义的目录中含有多个文件名为ls的可执行文件,那么先查询到的同名文件被执行。
# 打印环境变量
echo $PATH | sed -n 's/:/\n/gp'