IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux | 文件系统与操作 -> 正文阅读

[系统运维]Linux | 文件系统与操作

磁盘分区

硬盘分区包括主分区、扩展分区和逻辑分区;在一个硬盘中,主分区和扩展分区最多是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
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:只显示本地文件系统的使用情况

文件类型

普通文件目录文件设备文件链接文件
-dln命令
文本文件、二进制文件、数据文件字符设备、块设备硬链接、软链接
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,存储着源文件的位置信息便于指向。
使用限制上,不能对目录创建硬链接,不能对不同文件系统创建硬链接,不能对不存在的文件创建硬链接;
可以对目录创建软链接,可以跨文件系统创建软链接,可以对不存在的文件创建软链接。

文件权限

augo
allusergroupother
所有用户文件所有者同组用户其他用户

表示方法

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

权限表示方法ugo
字母表示法r w xr - xr - -
对应二进制1 1 11 0 11 0 0
八进制表示法754

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函数:用于在指定的文件描述符中将将文件指针定位到相应位置。
    whence
  7. write函数:向文件中写数据
    成功返回已写字节数,失败返回-1
  8. read函数:读取数据
    返回值:成功返回读到的字节数,若已到文件结尾返回0,出错返回-1。
  9. dup函数:如果调用成功则返回新的文件描述符,否则出错返回-1。
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 19:18:51  更:2022-05-21 19:19:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:36:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码