文件系统就是分区或磁盘上的所有文件的逻辑集合。
文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。
不同Linux发行版本之间的文件系统差别很少,主要表现在系统管理的特色工具以及软件包管理方式的不同,文件目录结构基本上都是一样的。
文件系统有多种类型,如:

  • ext2 : 早期linux中常用的文件系统;
  • ext3 : ext2的升级版,带日志功能;
  • RAMFS : 内存文件系统,速度很快;
  • iso9660:光盘或光盘镜像;
  • NFS : 网络文件系统,由SUN发明,主要用于远程文件共享;
  • MS-DOS : MS-DOS文件系统;
  • FAT : Windows XP 操作系统采用的文件系统;
  • NTFS : Windows NT/XP 操作系统采用的文件系统。

分区与目录

文件系统位于磁盘分区中;一个硬盘可以有多个分区,也可以只有一个分区;一个分区只能包含一个文件系统。
Linux文件系统与Windows有较大的差别。Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如 C、D、E、F等。
Linux的文件结构是单个的树状结构,根目录是“/”,其他目录都要位于根目录下。
每次安装系统的时候我们都会进行分区,Linux下磁盘分区和目录的关系如下:

  • 任何一个分区都必须对应到某个目录上,才能进行读写操作,称为“挂载”。
  • 被挂载的目录可以是根目录,也可以是其他二级、三级目录,任何目录都可以是挂载点。
  • 目录是逻辑上的区分。分区是物理上的区分。
  • 根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。

为什么要分区,如何分区?

  • 可以把不同资料,分别放入不同分区中管理,降低风险。
  • 大硬盘搜索范围大,效率低。
  • /home、/var、/usr/local 经常是单独分区,因为经常会操作,容易产生碎片。

为了便于定位和查找,Linux中的每个目录一般都存放特定类型的文件,下表列出了各种Linux发行版本的常见目录:

目录 说明
/ 根目录,只能包含目录,不能包含具体文件。
/bin 存放可执行文件。很多命令就对应/bin目录下的某个程序,例如 ls、cp、mkdir。/bin目录对所有用户有效。
/dev 硬件驱动程序。例如声卡、磁盘驱动等,还有如 /dev/null、/dev/console、/dev/zero、/dev/full 等文件。
/etc 主要包含系统配置文件和用户、用户组配置文件。
/lib 主要包含共享库文件,类似于Windows下的DLL;有时也会包含内核相关文件。
/boot 系统启动文件,例如Linux内核、引导程序等。
/home 用户工作目录(主目录),每个用户都会分配一个目录。
/mnt 临时挂载文件系统。这个目录一般是用于存放挂载储存设备的挂载目录的,例如挂载CD-ROM的cdrom目录。
/proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统。
/tmp 临时文件目录,系统重启后不会被保存。
/usr /user目下的文件比较混杂,包含了管理命令、共享文件、库文件等,可以被很多用户使用。
/var 主要包含一些可变长度的文件,会经常对数据进行读写,例如日志文件和打印队列里的文件。
/sbin 和 /bin 类似,主要包含可执行文件,不过一般是系统管理所需要的,不是所有用户都需要。

常用文件管理命令

Command Description
cat filename 查看文件内容。
cd dirname 改变所在目录。
cp file1 file2 复制文件或目录。
file filename 查看文件类型(binary, text, etc)。
find filename dir 搜索文件或目录。
head filename 显示文件的开头,与tail命令相对。
less filename 查看文件的全部内容,可以分页显示,比more命令要强大。
ls dirname 遍历目录下的文件或目录。
mkdir dirname 创建目录。
more filename 查看文件的全部内容,可以分页显示。
mv file1 file2 移动文件或重命名。
pwd 显示用户当前所在目录。
rm filename 删除文件。
rmdir dirname 删除目录。
tail filename 显示文件的结尾,与head命令相对。
touch filename 文件不存在时创建一个空文件,存在时修改文件时间戳。
whereis filename 查看文件所在位置。
which filename 如果文件在环境变量PATH中有定义,那么显示文件位置。

df命令

管理磁盘分区时经常会使用 df (disk free) 命令,df -k 命令可以用来查看磁盘空间的使用情况(以千字节计),例如:

每一列的含义如下:

说明
Filesystem 代表文件系统对应的设备文件的路径名(一般是硬盘上的分区)。
kbytes 分区包含的数据块(1024字节)的数目。
used 已用空间。
avail 可用空间。
capacity 已用空间的百分比。
Mounted on 文件系统挂载点。

某些目录(例如 /devices)的 kbytes、used、avail 列为0,use列为0%,这些都是特殊(或虚拟)文件系统,即使位于根目录下,也不占用硬盘空间。

du命令

du (disk usage) 命令可以用来查看特定目录的空间使用情况。
du 命令会显示每个目录所占用数据块。根据系统的不同,一个数据块可能是 512 字节或 1024 字节。举例如下:

挂载文件系统

挂载是指将一个硬件设备(例如硬盘、U盘、光盘等)对应到一个已存在的目录上。 若要访问设备中的文件,必须将文件挂载到一个已存在的目录上, 然后通过访问这个目录来访问存储设备。
这样就为用户提供了统一的接口,屏蔽了硬件设备的细节。Linux将所有的硬件设备看做文件,对硬件设备的操作等同于对文件的操作。
注意:挂载目录可以不为空,但挂载后这个目录下以前的内容将不可用。
需要知道的是,光盘、软盘、其他操作系统使用的文件系统的格式与linux使用的文件系统格式是不一样的,挂载需要确认Linux是否支持所要挂载的文件系统格式。
查看当前系统所挂载的硬件设备可以使用 mount 命令:

一般约定,/mnt 为临时挂载目录,例如挂载CD-ROM、远程网络设备、软盘等。
也可以通过mount命令来挂载文件系统,语法为:mount -t file_system_type device_to_mount directory_to_mount_to

注意:file_system_type用来指定文件系统类型,通常可以不指定,Linux会自动正确选择文件系统类型。
挂载文件系统后,就可以通过 cd、cat 等命令来操作对应文件。
可以通过 umount 命令来卸载文件系统。例如,卸载 cdrom:umount /dev/cdrom

不过,大部分现代的Linux系统都有自动挂载卸载功能,unmount 命令较少用到。

用户和群组配额

用户和群组配额可以让管理员为每个用户或群组分配固定的磁盘空间。
管理员有两种方式来分配磁盘空间:

  • 软限制:如果用户超过指定的空间,会有一个宽限期,等待用户释放空间。
  • 硬限制:没有宽限期,超出指定空间立即禁止操作。

下面的命令可以用来管理配额:

命令 说明
quota 显示磁盘使用情况以及每个用户组的配额。
edquota 编辑用户和群组的配额。
quotacheck 查看文件系统的磁盘使用情况,创建、检查并修复配额文件。
setquota 设置配额。
quotaon 开启用户或群组的配额功能。
quotaoff 关闭用户或群组的配额功能。
repquota 打印指定文件系统的配额。


教程:11、文件系统相关推荐

  1. 黑马lavarel教程---11、响应处理

    黑马lavarel教程---11.响应处理 一.总结 一句话总结: 如果在昂扬状态,看学习视频和运动时间重合,会很舒服 1.jquery的$.post参数为什么不需要占位? 因为每个参数的类型不同,可 ...

  2. STM32 电机教程 11 - BLDC 6 步方波开环速度控制

    前言 无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器.汽车.航空航天.消费品.医疗.工业自动化设备和仪器等行业中使用.正如名称 ...

  3. STM32 进阶教程 11 - RAM中运行程序

    前言 上一讲我们讲到stm32可以将代码直接下载到RAM中时行程序调试,同时可以有效避开STM32 Flash 擦写次数有限问题,其实除了仿真调试时将程序设置在RAM中可以解决FLASH擦写次数问题外 ...

  4. STM32 基础系列教程 11 – ADC 轮询

    前言 学习stm32 adc模数转换接口使用,学会用STM32对模拟信号时行采样,通过轮询模式得到ADC结果. 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM ...

  5. Magento教程 11:Inline Translation前台改文

    继上次介绍过如何在Magento后台编辑文字后,这次要和大家分享另一种更改文字的方法, 在Magento里面称作Inline Translation,也就是直接于网页修改文字! 也许大家会有疑问,既然 ...

  6. 深度学习与计算机视觉教程(11) | 循环神经网络及视觉应用(CV通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/37 本文地址:https://www.showmeai.tech/article-d ...

  7. Qt5 学习之路及嵌入式开发教程11:Qt5标准输入对话框类及QSlider控件

    Qt5 学习之路及嵌入式开发教程11:Qt5标准输入对话框类及QSlider控件 这次任务要完成弹出窗口及QSlider控件的界面设计及代码编写 一.Qt5弹出窗口 1.界面式布局 建立项目工程文件 ...

  8. ServU 教程11.1.0.7使用教程

    ServU 教程11.1.0.7使用教程 http://wenku.baidu.com/view/be7ffc4fe45c3b3567ec8b10.html 安装 flashfxp 下载地址 http ...

  9. matlab设计菜单教程,MATLAB程序设计教程(11)——MATLAB图形用户界面设计

    MATLAB程序设计教程(11)--MATLAB图形用户界面设计 第11章  MATLAB图形用户界面设计 11.1  菜单设计 11.2  对话框设计 11.3  图形用户界面设计工具 11.1菜单 ...

  10. ArcGIS二次开发基础教程(11):网络分析之最短路径分析

    ArcGIS二次开发基础教程(11):网络分析之最短路径分析 最短路径分析 这里直接调用了在mdb中建立好的网络数据集 //全局变量 private INetworkDataset my_networ ...

最新文章

  1. linux做预警机制,预警通告:Linux内核中TCP SACK机制远程DoS
  2. 马斯克要办大学上了热搜
  3. 0098 高级程序设计 c语言 在线作业,中国大学MOOC(C语言程序设计精髓)作业
  4. 用池来提升对象的复用
  5. Linux 解决ssh连接慢的问题
  6. Theano+Keras开发环境搭建(最简单的教程)
  7. Oracle 数据库限制IP地址连接
  8. sop28和so28j封装_sop28封装尺寸
  9. 阿里程序员,工作6年,真实薪资曝光
  10. 关于诡辩--偷换概念
  11. 科比投篮选择——数据采集
  12. 机房收费系统的退卡和结账
  13. 堡垒机远程连接报“由于安全设置错误, 客户端无法连接到远程计算机. 确定你已登录到网络后,再重新连接” 错误处理步骤
  14. 使用poi将数据导出到excel
  15. 金庸的小说人生(1)
  16. 一份SEO优化操作方案具体讲解
  17. Htc Vive详细图文安装教程
  18. 新增Transformer优化!NVIDIA最新发布TensorRT 8!推理方面取得重大突破
  19. 泛微E9IDEA开发环境配置非maven篇
  20. 2022-2028全球及中国即时定位与地图构建机器人行业研究及十四五规划分析报告

热门文章

  1. R语言基于glmnet构建分类模型并可视化特征系数(coefficient)以及L1正则化系数(lambda)实战
  2. 回归评估+解释方差分
  3. Logstic与Softmax比较
  4. access的未来发展 ieee_传感器行业发展路在何方 多国专家齐聚来一场头脑风暴
  5. PHP 表单文件上传的原理,php上传文件的原理
  6. HTML里面设置文本倒影,文字倒影怎么做
  7. Linux目录是否是否为空,在Linux上使用C检查目录是否为空
  8. python 自己写个调试工具
  9. python socket 通信
  10. python opencv 拼接 连接 显示 图片