文章目录

  • 磁盘分区
  • 文件系统目录
    • 文件组成
    • 文件系统
    • 文件系统操作
      • 挂载
  • 文件类型
    • 链接命令 :ln
      • 硬链接VS软链接
  • 文件权限
    • 表示方法
    • chmod:改变权限
      • 文件默认权限umask掩码
    • chown:改变属主
  • 文件操作
    • 文件描述符
    • 函数

磁盘分区

硬盘分区包括主分区、扩展分区和逻辑分区;在一个硬盘中,主分区和扩展分区最多是4个,逻辑分区数量不限。

每一个硬件设备映射到一个系统的文件

  • Linux为IDE设备(光驱,硬盘)分配一个由hd前缀组成的文件

驱动器标识符是“hdx*”,hd表示是IDE设备;x是盘号(a是基本盘,b是基本从属盘,c是辅助主盘,d是辅助从属盘);*表示分区,前4个分区用数字1~4表示(主分区或扩展分区),从第5个分区开始是逻辑分区

例:
/dev/hda2:第1个IDE硬盘上的第2 个主分区或扩展分区
/dev/hdb1:第2个IDE硬盘上的第21个主分区或扩展分区

  • Linux为SCSI设备分配一个由sd前缀组成的文件

驱动器标识符是“sdx*”,sd表示是SCSI设备;x是盘号(a是基本盘,b是基本从属盘,c是辅助主盘,d是辅助从属盘);*表示分区,前4个分区用数字1~4表示(主分区或扩展分区),从第5个分区开始是逻辑分区

注:

  1. Linux下每一个硬盘最多有16个分区;主分区(扩展分区)占用1~ 4,逻辑分区占用5~16
  2. 逻辑分区必须建立在扩展分区上,而不是主分区上

文件系统目录

Directory Tree

文件组成

  1. 有三部分组成:文件名、文件属性、数据
  2. 每个文件都对应一个inode数据结构,其中存放了文件的属主、属组、读/写权限、文件大小、链接数等,每一个inode有一个编号i-number
    注:inode中并不包含文件的名字,文件名字存放在 文件所在目录中
  3. ls -i :查看指定文件的inode编号
    stat test.sh:查看文件inode信息
    df -i :查看每个硬盘分区的inode总数和已经使用 的数量
  4. 目录的内容只有文件名和inode编号
    inode表指针执行数据块

文件系统

  • ext3:加入了记录元数据的日志功能
  • ext2
  • Swap文件系统
    Linux的交换分区,使用整个交换分区来提供虚拟内存,分区大小一般是系统物理内存的2倍
  • ISO9660
    标准文件系统
  • proc
    Linux系统上的/proc目录是一种文件系统(proc文件系统),/proc是一种伪文件系统(虚拟文件系统),存储的是当前内核运行状态的特殊文件,用来作为连接内核数据结构的
  • 虚拟文件系统 VFS
    不是一种实际的文件系统,只存在于内存中,不存在于任何外存空间

文件系统操作

  1. fdisk:创建、删除分区、查看分区信息
  2. mkfs:格式化
    磁盘分区完成后就要进行文件系统的格式化,本身并不执行建立文件系统的工作,调用相关程序来执行
    mkfs -t ext3 /dev/sda1:将sda1分区格式化为ext3

挂载

  • 挂载定义:建立文件系统后,还需要将**文件系统安装到 Linux目录树的某个位置上才能使用。**这个过程称为挂载,文件系统所挂载到的目录称为挂载点。
  • 磁盘分区、软盘、USB盘、光盘都需要挂载
  • 释放所挂载的目录称为卸载
  1. mount:手动挂载
    mount [-t fs-type] [-o option] device mountpoint
    fs-type为文件系统类型,option常用选项:ro只读方式;rw读写方式;remount重新挂载已挂载的文件系统。
    自动挂载:Linux操作系统的文件系统信息都存储/etc/fstab脚本文件中,在系统引导过程中自动读取并加载该文件内容中的文件系统。
    例:
    要使用优盘,在/etc/fstab中添加如下一行
    /dev/sda1 /mnt/disk1 vfat iocharset = cp936, rw 0 0

  2. umount:卸载
    例:
    要卸载已经挂载到/mnt/sda5上的文件系统,可以使用如下命令:
    [root@localhost /]# umount /dev/sda5

    [root@localhost /]# umount /mnt/sda5

  3. du:磁盘统计,使用情况
    [root@localhost /]# du - a /home/user1

  4. df :磁盘空间统计(未使用)
    df -lh:

a:显示所有文件系统的信息,包括swap和proc
h:以最合适的容量单位显示
i:显示文件节点数inode的使用情况
l:只显示本地文件系统的使用情况

文件类型

普通文件 目录文件 设备文件 链接文件
- d ln命令
文本文件、二进制文件、数据文件 字符设备、块设备 硬链接、软链接
file test*:查看当前目录下以test开头的所有文件类型 在/dev目录下 文件的链接就是为一个文件起多个名字

链接命令 :ln

  • 链接文件: ln命令
  1. 硬链接
    一个文件可能有多个文件名
    ln 不带选项:会增加链接数,rm命令会减少链接数
    一个文件除非链接数为0,否则不会物理地从文件系统中被删除。
  2. 软链接
    将一个路径名链接到一个文件
    这些文件是一种特别类型的文件。它只是一个小文本文件(如b目录下的m2.c文件),其中包含它所链接的目标文件的绝对路径名。

    注:
    1.用“ln -s”命令建立符号链接时,最好源文件用绝对路径名,这样可以在任何工作目录下进行符号链接。
    2.在目录长列表中,符号链接作为一种特殊的文件类型显示出来,第一个字母是l
    3.符号链接的大小是其链接文件的路径名中的字节数
    4.当用ls -l列出文件时,可以看到符号链接名后有一个箭头指向源文件或目录

硬链接VS软链接

硬链接和源文件是同一份文件,而软链接是独立的文件,类似于快捷方式,与目标文件是不同的inode,存储着源文件的位置信息便于指向。
使用限制上,不能对目录创建硬链接,不能对不同文件系统创建硬链接,不能对不存在的文件创建硬链接;
可以对目录创建软链接,可以跨文件系统创建软链接,可以对不存在的文件创建软链接。

文件权限

a u g o
all user group other
所有用户 文件所有者 同组用户 其他用户

表示方法

三组九位字母表示法:r w x 读写执行
三组九位二进制表示法:有权限标1
三位八进制表示法:r:4 w:2 x:1

权限表示方法 u g o
字母表示法 r w x r - x r - -
对应二进制 1 1 1 1 0 1 1 0 0
八进制表示法 7 5 4

chmod:改变权限

  1. 字母形式修改权限

[root@localhost /]# chmod u+x,g+w,o-r f1
[root@localhost /]# chmod a=rw f2

  1. 数字形式修改权限

[root@localhost /]# chmod 644 f1
[root@localhost /]# chmod 700 f2

文件默认权限umask掩码

系统默认掩码是022
文件创建时的默认权限=666-umask
目录创建时的默认权限=777-umask

chown:改变属主

文件操作

文件描述符

非负整数

函数

#include<fcntl.h>
#include<sys/types.h>
#include <unistd.h>
#include <stdio.h>
int open(const char *path, int flags,  mode t_mode);//int fd=open("myfile",O_CREAT,S_IRUSR|S_IXOTH);
int creat(const char *path,mode_t mode);
int close(fd);
int rename (const char * oldpath,const char * newpath);
int remove( const char * pathname);
off_t lseek( int file_des, off_t offset, int whence );
ssize_t write( int file_des, const void *buf, size_t nbytes );//  file_des:文件描述符,标识要读取的文件。*buf :缓冲区,用来存储读入的数据 nbytes :要读取的字符数。
ssize_t read( int file_des, void *buf, size_t nbytes );
int dup( int file_des );
int dup2( int file_des, int file_des2 );
  1. open函数:打开或创建文件
    成功返回文件描述符,失败返回-1
  2. creat函数:创建文件
    成功返回以只写方式打开的文件描述符,失败返回-1
  3. close函数:关闭文件
    成功返回0.失败返回-1
  4. rename函数:修改文件名称
    成功返回0,失败返回-1
  5. remove函数:删除文件
    成功返回0,失败返回-1
  6. lseek函数:用于在指定的文件描述符中将将文件指针定位到相应位置。
  7. write函数:向文件中写数据
    成功返回已写字节数,失败返回-1
  8. read函数:读取数据
    返回值:成功返回读到的字节数,若已到文件结尾返回0,出错返回-1。
  9. dup函数:如果调用成功则返回新的文件描述符,否则出错返回-1。

Linux | 文件系统与操作相关推荐

  1. Linux编程基础:第5章Linux文件系统与操作 课后习题

    <Linux编程基础>黑马程序员/编著 清华大学出版社 目录 一.填空题 二.判断题 三.单选题 四.简答题 1.简单说明软链接文件和硬链接文件的区别. 2.已知inode结构体中的共有1 ...

  2. linux文件系统扩容操作步骤,仅供参考

    1.查看/opt/aspire/product/ess/apache-tomcat-ess/webapps/doc文件系统使用率为91%,需要扩容[root@CMDI-DZQZ-Svr /]# df ...

  3. 系统级程序设计第一课内容——Linux系统与操作 2022.5.2

    系统级程序设计第一课内容--Linux系统与操作 文章目录 系统级程序设计第一课内容--Linux系统与操作 一.Linux文件系统与操作 二.文件操作 1.主要函数 2.open() 3.read( ...

  4. Linux 文件系统剖析

    Linux 文件系统剖析 按照分层结构讨论 Linux 文件系统 M. Tim Jones, 顾问工程师, Emulex Corp. 简介: 在文件系统方面,Linux® 可以算得上操作系统中的 &q ...

  5. linux文件系统dentry_NFS 文件系统源代码剖析

    NFS 文件系统概述 NFS(Network File System,网络文件系统)是一种基于网络的文件系统.它可以将远端服务器文件系统的目录挂载到本地文件系统的目录上,允许用户或者应用程序像访问本地 ...

  6. linux检查文件一致性,3.20 fsck(检查并修复Linux 文件系统)

    3.20 fsck(检查并修复Linux 文件系统) (1)频度等级:☆☆ (2)功能说明: 检查文件系统的一致性并且以交互方式修复文件系统.在出现系统故障之后,总是运行fsck 命令.矫正的动作也许 ...

  7. 文件系统:Linux文件系统剖析

    查看原文:http://www.ibm.com/developerworks/cn/linux/l-linux-filesystem/ 在文件系统方面,Linux® 可以算得上操作系统中的 " ...

  8. linux对文件的描述,对Linux文件系统的简单理解

    姓名:邝念君 学号:14020150024 [嵌牛导读]:EXT3,EXT4,BTRFS和XFS是现在最常见的四个Linux文件系统.为了便于理解,本文以相对简单的EXT2为切入点,介绍其原理.便不难 ...

  9. 低调的 Linux 文件系统家族

    在 Linux 中,最直观.最可见的部分就是 文件系统(file system).下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想. 这些思想中有一些 ...

  10. 《Linux嵌入式实时应用开发实战(原书第3版)》——3.5 Linux文件系统

    本节书摘来自华章计算机<Linux嵌入式实时应用开发实战(原书第3版)>一书中的第3章,第3.5节,作者:(美)Doug Abbott 更多章节内容可以访问云栖社区"华章计算机& ...

最新文章

  1. c语言正数与负数相加_C语言数据基本类型(1)
  2. python【接上篇】
  3. Keras蚂蚁金服大赛实战——自然语言处理技术
  4. 用substr()函数高效的输出一个字符串的所用子串
  5. Android普通对话框标题居中,android开发Toolbar标题居中显示的解决方法
  6. RequestBody获取前端数据_360视频云Web前端HEVC播放器实践剖析
  7. Modularity(模块化-无模块化)
  8. torch7框架 深度学习(1)
  9. Leetcode每日一题:724.Find Pivot Index(寻找中心索引)
  10. ReactNative组件导出
  11. golang基础之三-字符串,时间,流程控制,函数
  12. 撇去 Windows 的微软,又掉进了贪污贿赂的深坑
  13. Makefile 函数
  14. epoll nio区别_什么是BIO,NIO与AIO
  15. 计算机手速专业说法,大学里“挂科率超高”的专业,学霸也不好拿捏,考试难补考更难...
  16. 网络安全—社会工程学
  17. C语言中 pow函数的使用
  18. Activity 审批流简单介绍
  19. [源码和文档分享]基于HTML5和JS实现的在线电子钢琴网页版
  20. C语言字母的组合,C语言求字母的全部组合

热门文章

  1. 项目管理软件浮出水面(转)
  2. 数据库在线自生成ER图
  3. GNS3安装图文教程
  4. 分享几个百度网盘搜索引擎
  5. 2019年11月~2020年7月CCF会议列表-计算机视觉计算机图形学
  6. [Hacking]国内首届黑客大会COG2011现场报道(补)
  7. 2020软件测试学科全套上课视频教程网盘免费分享
  8. 如何下载使用期刊 LateX 模板
  9. hadoop菜鸟教程 Hadoop学习资料(云计算学习电子书)
  10. 将 Ps 的调色效果保存为预设文件