正在学习Linux,记录一下学习历程。
文件:一个有名称的数据集合
文件是一个源,有一个名称,可以从中读取数据。或是任意目标,有一个名称,可以向其中写入数据。
不仅指像磁盘文件那样的数据存储库,还指任意的物理设备(如:键盘(输入源),显示器(输入目标))。
还有不存在物理实体的文件,也接受输入或产生输出,从而提供具体的服务。
程序可以使用简单的过程从任意的输入源读取数据,向任意的输出源写入数据。
普通文件,目录,伪文件
包含数据,位于某种类型的存储设备上(如磁盘,CD,DVD,闪存)
普通文件有两种类型:文本文件,二进制文件
文本文件:包含的数据行由可显示的字符(字母,数字,标点符号,空格,制表符)和每行末尾的新行字符构成。
用于存储文件数据。包括纯文本,shell脚本,源程序,配置文件,HTML文件。
二进制文件:包含非文本数据,这种类型的数据只有在执行或者由其他程序解释时才有意义。
包括可执行程序,对象文件,图像,音乐文件,视频文件,电子表格,数据库等。
不存放常规数据,用来组织,访问其他文件。驻留在某种类型的存储设备上。
目录中包含文件,文件也可以是目录,这样就可以按照层次结构系统组织文件。
整个文件系统就是大的层次结构树。
不用来存储数据,本身不占用任何空间。是文件系统的一部分,并按目录进行组织。
目的:提供一种服务,采取和常规文件相同的访问方式进行访问。
多数情况下,伪文件用来访问内核(操作系统的核心部分)提供的服务。
类型:设备文件,命名管道,proc文件
设备文件:也称特殊文件,是物理设备的内部表示,包括计算机和网络中的每个设备都可以当作特殊文件来访问。如键盘,显示器,打印机,磁盘驱动器。
命名管道:管道功能的一个扩展,经一个程序的输出连接到另一个程序的输入上。
proc文件:运行访问内核中的信息。
伪文件的详细介绍:点击打开链接
在Linux文件系统中,目录基于一个被称为”根目录“的主目录组织成树形结构。
文件系统使用目录和子目录组织文件。
目录并不存放实际的文件,它指包含定位文件所需的信息。
文件系统的任务是存储和组织数据,并向用户和程序提供数据的访问功能。
/是父目录与子目录之间的分界符,根目录省略名称。
每个存储设备都有自己的本地文件系统,其目录和子目录按照标准组织成树。
在访问本地文件系统时,它的树必须附加在主树上。
挂载:将小型文件系统的根目录连接到主文件系统中的特定目录上
挂载点:小文件系统在主树中附加到的目录
卸载:断开文件系统
作为启动过程的一部分,系统每次启动时,都会自动挂载一些本地文件系统。
当需要手动挂载一个设备时,使用mount程序,卸载时使用umount程序。
储存设备类型:固定介质,可移动介质
固定介质:永久附属于计算机(如:硬盘驱动器)
可移动介质:在系统运行时可以改变(如:CD,DVD,软盘,磁带,闪存,存储卡)
通常将固定介质挂载在/mnt,将可移动介质挂载在/media
顶级目录:根目录下的子目录
目录 | 内容 |
/bin | 基本程序 |
/boot |
启动系统时所需的文件 |
/dev | 设备文件 |
/etc | 配置文件 |
/home | 用户的home目录 |
/lib |
基本共享库,内核模块 |
/lost+found | 由fsck恢复的受损文件 |
/media | 可移动介质的挂载点 |
/mnt | 固定介质挂载点 |
/opt | 第三方应用软件(可选软件) |
/proc | proc文件 |
/root | 根用户(超级用户)的home目录 |
/sbin | 由超级用户运行的基本系统管理程序 |
/srv | 本地系统所提供服务的数据 |
/temp | 临时文件 |
/usr | 静态数据使用的辅助文件系统 |
/var | 可变数据使用的辅助文件系统 |
ps:
给每个用户一个home目录可以任由用户自己处置,一般位于/home下。
除了root(超级用户),因为超级用户必须总是能控制系统,所以超级用户的home目录必须总是可用的,即使在系统启动过程中,或是单用户模式运行时。/home目录属于辅助文件系统,所以在挂载前不可用,/root属于根文件系统,总是可用的。
目录 | 内容 |
/usr/bin | 非基本程序(大多数用户程序) |
/usr/include | C程序的头文件 |
/usr/lib | 非基本共享库 |
/usr/local | 本地安装程序 |
/usr/sbin | 由超级用户运行的非基本系统管理程序 |
/usr/share | 共享系统数据 |
/usr/src | 源代码(只用于参考) |
根文件系统:储存在引导设备上的初始的文件系统。
/bin /boot /dev /etc /lib /root /sbin /tmp
根文件系统自动挂载,其中存放着启动系统所需的全部程序和数据文件,还包含系统出现问题时系统管理员需要使用的工具。
一旦挂载了根文件系统,内核也启动完毕。就会自动挂载其他设备文件系统。
通用程序:可以由任何人使用
/bin | 基本程序 |
/usr/bin | 非基本程序 |
/usr/local/bin | 本地安装程序 |
系统管理程序:只能由超级用户使用
/sbin | 由超级用户运行的基本系统管理程序 |
/usr/sbin | 由超级用户运行的非基本系统管理程序 |
/usr/local/sbin | 本地安装的系统程序 |
第三方应用程序:可选程序,用户自行安装的第三方(非用户自己,非系统)提供的程序。
/opt/xxx | 应用程序xxx的静态数据,包括程序 |
/var/opt/xxx | 应用程序xxx的可变数据 |
虚拟文件系统(virtual file system,VFS)充当程序和各种文件系统的中间人。
每当程序需要I/O操作时,它就向VFS发送一个请求。VFS定位合适的文件系统,同时设备驱动程序执行I/O与之进行通信。
通过这种方式,VFS允许程序以一个单独的,一致的树形结构(Linux文件系统)协调工作,即便数据实际来源于各种独立的异构文件系统。
在每个文件操作的一端,VFS以程序语言和程序沟通,在另一端,VFS以设备文件系统的语言与各种设备文件沟通。最终,程序能够与任何文件系统交互,而且不必与文件系统直接沟通。
每当开发新类型的文件系统时(假设为新设备开发),只需使新文件系统可以与VFS进行沟通即可。
基于磁盘的文件系统 | |
ext3 | 第3代扩展文件系统(Linux) |
ext4 | 第4代扩展文件系统(Linux) |
FAT32 | 32位文件分配表文件系统(Windows) |
HFS+ | 层次式文件系统(Mac) |
ISO 9660 | ISO 9660 标准文件系统(CD-ROM) |
NTFS | NT文件系统(Windows) |
UDF | 通用磁盘格式文件系统(可重写CD和DVD) |
UFS2 | Unix文件系统(BSD,Solaris) |
网络文件系统 | |
NFS | 网络文件系统(广泛使用) |
SMB | 服务器信息块(Windows网络) |
特殊用途文件系统 | |
devpts | 伪终端的设备界面(PTY) |
procfs | proc文件系统 |
sysfs | 系统数据文件系统(设备与驱动器) |
tmpfs | 临时存储文件系统 |