Linux目录结构详解(一)

时间:2022-10-28 12:34:44

Linux目录结构,在逻辑上所有目录只有一个顶点,即/(根目录),是所有目录的起点。根下面类似于一个倒挂着的树的结构。

Linux目录按照类别组织:

应用程序 /usr/bin

数据文件,帮助/usr/share

配置文件 /ect/

启动命令 /etc/init.d

要访问一块磁盘设备,必须先将其挂载到Linux目录结构中。如/dev/sda,要将其挂载到/usr上,用命令mount /dev/sda /usr,然后就可以使用磁盘了。目录结构和分区设备是没有关系的。不同的目录可以跨越不同的磁盘设备或分区。

相对路径和绝对路径:

  从根开始的就是绝对路径,如/data /ect /usr/bin

  不是从根开始的就是相对路径 如:data ./test.txt

Unix系统目录结构典故

  话说1969年,Ken ThompsonDennis Ritchie在小型机PDP-7上发明了Unix。1971年,他们将主机升级到了PDP-11。

  当时,他们使用一种叫做RK05的储存盘,一盘的容量大约是1.5MB。

  没过多久,操作系统(根目录)变得越来越大,一块盘已经装不下了。于是,他们加上了第二盘RK05,并且规定第一块盘专门放系统程序,第二块盘专门放用户自己的程序,因此挂载的目录点取名为/usr。也就是说,根目录"/"挂载在第一块盘,"/usr"目录挂载在第二块盘。除此之外,两块盘的目录结构完全相同,第一块盘的目录(/bin, /sbin, /lib, /tmp...)都在/usr目录下重新出现一次。  

  后来,第二块盘也满了,他们只好又加了第三盘RK05,挂载的目录点取名为/home,并且规定/usr用于存放用户的程序,/home用于存放用户的数据。

  从此,这种目录结构就延续了下来。随着硬盘容量越来越大,各个目录的含义进一步得到明确。

  /:存放系统程序,也就是At&t开发的Unix程序。

  /usr:存放Unix系统商(比如IBM和HP)开发的程序。

  /usr/local:存放用户自己安装的程序。

  /opt:在某些系统,用于存放第三方厂商开发的程序,所以取名为option,意为"选装"。

Linux目录层次标准FHS

  FHS全称(Filesystem Hierarchy Standard),中文意思是目录层次结构,是Linux的目录规范标准。

  FHS定义了两层规范:第一层是"/"目录下应该存放什么文件数据,如/ect 目录放置系统的配置文件 /ect/exports,/ect/hosts,而/bin和/sbin放置程序及系统命令。

    第二层是针对/usr(unix software resource)和/var这两个子目录来定义的。

/bin:常用二进制命令所在目录,如ls,cp,mkdir,rm等和/usr/bin类似

/boot:Linux内核以及引导系统程序所需的文件目录。

/dev:设备文件目录,如磁盘,声卡

/dev/null:空设备 用cat /dev/null > ./test.txt 可以清空文件内容

/etc:二进制安装包的配置文件默认路径和服务启动命令存放的目录。

/home:普通用户的家目录默认数据存放目录

/lib:库文件目录

/root:超级用户root的家目录

/lost+found:当系统意外崩溃或机器意外关机,会产生一些文件碎片在这里。系统在开机启动的过程中,fsck工具会检查这里,并修复已经损坏的文件系统。当系统发生问题时,可能会有文件被移动到这个目录中,可能需要用手工的方式来修复,或移动文件到原来的位置上。

/mnt:一般用于临时挂载存储设备的挂载目录,如cdrom,u盘等目录。直接插入光驱无法使用,要先挂载后使用。挂载点就是文件系统的(设备)入口。

/opt(option):在某些系统,用于存放第三方厂商开发的程序,所以取名为option,意为"选装"。

/proc:一个虚拟的文件系统。/proc 文件系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。

/sbin:大多是设计系统管理命令的存放地,是root用户可执行命令的存放地。

/tmp:临时文件目录,有时用户运行程序时,会产生临时文件。/tmp就用来存放临时文件,权限比较特殊。/var/tmp目录和这个目录类似

/var:这个目录内容经常变动的。/var/log目录用来存放系统日志,/var/www目录是定义Apache服务器站点存放目录;/var/lib用来存放一些库文件,如MySQL数据库。