磁盘分区
硬盘分区包括主分区、扩展分区和逻辑分区;在一个硬盘中,主分区和扩展分区最多是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 0 -
umount:卸载 例: 要卸载已经挂载到/mnt/sda5上的文件系统,可以使用如下命令: [root@localhost /]# umount /dev/sda5 或 [root@localhost /]# umount /mnt/sda5 -
du:磁盘统计,使用情况 [root@localhost /]# du - a /home/user1 -
df :磁盘空间统计(未使用) df -lh:
a:显示所有文件系统的信息,包括swap和proc h:以最合适的容量单位显示 i:显示文件节点数inode的使用情况 l:只显示本地文件系统的使用情况
文件类型
普通文件 | 目录文件 | 设备文件 | 链接文件 | |
---|
- | d | | ln命令 | | 文本文件、二进制文件、数据文件 | | 字符设备、块设备 | 硬链接、软链接 | | file test*:查看当前目录下以test开头的所有文件类型 | | 在/dev目录下 | 文件的链接就是为一个文件起多个名字 | |
链接命令 :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 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 );
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。
|