Linux | 文件系统与操作
文章目录
- 磁盘分区
- 文件系统目录
- 文件组成
- 文件系统
- 文件系统操作
- 挂载
- 文件类型
- 链接命令 :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个分区开始是逻辑分区
注:
- Linux下每一个硬盘最多有16个分区;主分区(扩展分区)占用1~ 4,逻辑分区占用5~16
- 逻辑分区必须建立在扩展分区上,而不是主分区上
文件系统目录
Directory Tree
文件组成
- 有三部分组成:文件名、文件属性、数据
- 每个文件都对应一个inode数据结构,其中存放了文件的属主、属组、读/写权限、文件大小、链接数等,每一个inode有一个编号i-number
注:inode中并不包含文件的名字,文件名字存放在 文件所在目录中 - ls -i :查看指定文件的inode编号
stat test.sh:查看文件inode信息
df -i :查看每个硬盘分区的inode总数和已经使用 的数量 - 目录的内容只有文件名和inode编号
inode表指针执行数据块
文件系统
- ext3:加入了记录元数据的日志功能
- ext2
- Swap文件系统
Linux的交换分区,使用整个交换分区来提供虚拟内存,分区大小一般是系统物理内存的2倍 - ISO9660
标准文件系统 - proc
Linux系统上的/proc目录是一种文件系统(proc文件系统),/proc是一种伪文件系统(虚拟文件系统),存储的是当前内核运行状态的特殊文件,用来作为连接内核数据结构的 - 虚拟文件系统 VFS
不是一种实际的文件系统,只存在于内存中,不存在于任何外存空间
文件系统操作
- fdisk:创建、删除分区、查看分区信息
- mkfs:格式化
磁盘分区完成后就要进行文件系统的格式化,本身并不执行建立文件系统的工作,调用相关程序来执行
mkfs -t ext3 /dev/sda1:将sda1分区格式化为ext3
挂载
- 挂载定义:建立文件系统后,还需要将**文件系统安装到 Linux目录树的某个位置上才能使用。**这个过程称为挂载,文件系统所挂载到的目录称为挂载点。
- 磁盘分区、软盘、USB盘、光盘都需要挂载
- 释放所挂载的目录称为卸载
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 0umount:卸载
例:
要卸载已经挂载到/mnt/sda5上的文件系统,可以使用如下命令:
[root@localhost /]# umount /dev/sda5
或
[root@localhost /]# umount /mnt/sda5du:磁盘统计,使用情况
[root@localhost /]# du - a /home/user1df :磁盘空间统计(未使用)
df -lh:
a:显示所有文件系统的信息,包括swap和proc
h:以最合适的容量单位显示
i:显示文件节点数inode的使用情况
l:只显示本地文件系统的使用情况
文件类型
普通文件 | 目录文件 | 设备文件 | 链接文件 | |
---|---|---|---|---|
- | d | ln命令 | ||
文本文件、二进制文件、数据文件 | 字符设备、块设备 | 硬链接、软链接 | ||
file test*:查看当前目录下以test开头的所有文件类型 | 在/dev目录下 | 文件的链接就是为一个文件起多个名字 |
链接命令 :ln
- 链接文件: ln命令
- 硬链接
一个文件可能有多个文件名
ln 不带选项:会增加链接数,rm命令会减少链接数
一个文件除非链接数为0,否则不会物理地从文件系统中被删除。
- 软链接
将一个路径名链接到一个文件
这些文件是一种特别类型的文件。它只是一个小文本文件(如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:改变权限
- 字母形式修改权限
[root@localhost /]# chmod u+x,g+w,o-r f1
[root@localhost /]# chmod a=rw f2
- 数字形式修改权限
[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 );
- open函数:打开或创建文件
成功返回文件描述符,失败返回-1 - creat函数:创建文件
成功返回以只写方式打开的文件描述符,失败返回-1 - close函数:关闭文件
成功返回0.失败返回-1 - rename函数:修改文件名称
成功返回0,失败返回-1 - remove函数:删除文件
成功返回0,失败返回-1 - lseek函数:用于在指定的文件描述符中将将文件指针定位到相应位置。
- write函数:向文件中写数据
成功返回已写字节数,失败返回-1 - read函数:读取数据
返回值:成功返回读到的字节数,若已到文件结尾返回0,出错返回-1。 - dup函数:如果调用成功则返回新的文件描述符,否则出错返回-1。
Linux | 文件系统与操作相关推荐
- Linux编程基础:第5章Linux文件系统与操作 课后习题
<Linux编程基础>黑马程序员/编著 清华大学出版社 目录 一.填空题 二.判断题 三.单选题 四.简答题 1.简单说明软链接文件和硬链接文件的区别. 2.已知inode结构体中的共有1 ...
- linux文件系统扩容操作步骤,仅供参考
1.查看/opt/aspire/product/ess/apache-tomcat-ess/webapps/doc文件系统使用率为91%,需要扩容[root@CMDI-DZQZ-Svr /]# df ...
- 系统级程序设计第一课内容——Linux系统与操作 2022.5.2
系统级程序设计第一课内容--Linux系统与操作 文章目录 系统级程序设计第一课内容--Linux系统与操作 一.Linux文件系统与操作 二.文件操作 1.主要函数 2.open() 3.read( ...
- Linux 文件系统剖析
Linux 文件系统剖析 按照分层结构讨论 Linux 文件系统 M. Tim Jones, 顾问工程师, Emulex Corp. 简介: 在文件系统方面,Linux® 可以算得上操作系统中的 &q ...
- linux文件系统dentry_NFS 文件系统源代码剖析
NFS 文件系统概述 NFS(Network File System,网络文件系统)是一种基于网络的文件系统.它可以将远端服务器文件系统的目录挂载到本地文件系统的目录上,允许用户或者应用程序像访问本地 ...
- linux检查文件一致性,3.20 fsck(检查并修复Linux 文件系统)
3.20 fsck(检查并修复Linux 文件系统) (1)频度等级:☆☆ (2)功能说明: 检查文件系统的一致性并且以交互方式修复文件系统.在出现系统故障之后,总是运行fsck 命令.矫正的动作也许 ...
- 文件系统:Linux文件系统剖析
查看原文:http://www.ibm.com/developerworks/cn/linux/l-linux-filesystem/ 在文件系统方面,Linux® 可以算得上操作系统中的 " ...
- linux对文件的描述,对Linux文件系统的简单理解
姓名:邝念君 学号:14020150024 [嵌牛导读]:EXT3,EXT4,BTRFS和XFS是现在最常见的四个Linux文件系统.为了便于理解,本文以相对简单的EXT2为切入点,介绍其原理.便不难 ...
- 低调的 Linux 文件系统家族
在 Linux 中,最直观.最可见的部分就是 文件系统(file system).下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想. 这些思想中有一些 ...
- 《Linux嵌入式实时应用开发实战(原书第3版)》——3.5 Linux文件系统
本节书摘来自华章计算机<Linux嵌入式实时应用开发实战(原书第3版)>一书中的第3章,第3.5节,作者:(美)Doug Abbott 更多章节内容可以访问云栖社区"华章计算机& ...
最新文章
- c语言正数与负数相加_C语言数据基本类型(1)
- python【接上篇】
- Keras蚂蚁金服大赛实战——自然语言处理技术
- 用substr()函数高效的输出一个字符串的所用子串
- Android普通对话框标题居中,android开发Toolbar标题居中显示的解决方法
- RequestBody获取前端数据_360视频云Web前端HEVC播放器实践剖析
- Modularity(模块化-无模块化)
- torch7框架 深度学习(1)
- Leetcode每日一题:724.Find Pivot Index(寻找中心索引)
- ReactNative组件导出
- golang基础之三-字符串,时间,流程控制,函数
- 撇去 Windows 的微软,又掉进了贪污贿赂的深坑
- Makefile 函数
- epoll nio区别_什么是BIO,NIO与AIO
- 计算机手速专业说法,大学里“挂科率超高”的专业,学霸也不好拿捏,考试难补考更难...
- 网络安全—社会工程学
- C语言中 pow函数的使用
- Activity 审批流简单介绍
- [源码和文档分享]基于HTML5和JS实现的在线电子钢琴网页版
- C语言字母的组合,C语言求字母的全部组合