linux前期学习内容总结(二)

四、linux文件系统

一切皆文件

4.1linux文件系统及目录结构

多数linux的系统目录划分按照的是FHS标准,该标准规定了linux系统中每个二级目录的用途

以下是对这些目录的解释:

  • /bin  存放最常用的命令
  • /boot 存放启动linux的核心文件
  • /dev 存放外部设备
  • /home 存放系统管理所需的配置文件和子目录
  • /lib 存放动态链接共享库
  • /lost+found 一般为空目录,当系统非法关机时,这里会存放一些文件
  • /media 自动挂载外部设备
  • /mnt 手动挂载
  • /opt 安装软件的目录
  • /proc 系统内存的映射
  • /root 管理员目录
  • /sbin 系统管理员使用的系统管理程序
  • /srv 存放一些服务启动后需要提取的数据
  • /sys 文件系统存放目录
  • /tmp 存放临时文件
  • /usr 存放用户的应用程序和文件
  • /usr/bin 系统用户使用的应用程序
  • /usr/sbin 超级用户使用的管理程序所在的目录
  • /usr/src 内核源代码默认放置目录
  • /var 存放日志文件

4.2 linux常见的文件系统

Ext、Ext2、Ext3、Ext4、xfs、swap、NFS、iso9660、

fat、vfat、NTFS、ufs、proc、sysfs、tmpfs

4.3 inode、block、superblock

4.3.1inode是linux文件系统的基础

磁盘的自小存储单位是扇区(sector),操作系统在读取硬盘中的数据时,并不是单一扇区进行读取,而是一次性读取多个扇区,即一次性读取一块数据,这种扇区组成的块(block),是文件的最小存储单位,最常见的块大小为4KB,约为8个连续的扇区组成(每个扇区存储512字节)。一个文件可能会占用多个block,但是一个块只能存放一个文件

linux系统可以简单的分为inode table和data area,inode记录着文件的元数据,所以说inode是独一无二的,每个文件都有一个inode,文件实际内容存储在data block区块中,而硬盘中还有一个超级区块(superblock),超级区块回纪录整个文件系统的整体信息,比如:indoe和block的总量,使用量,剩余量等

inode包含的信息有以下:

  • 文件的类型
  • 文件的访问权限
  • 文件的所有者与组
  • 文件的大小
  • 链接数,即指向inode的文件名总数
  • 文件的状态改变时间(ctime)、最近访问时间(atime)和最近修改时间(mtime)
  • 文件特殊属性,SUID、SGID和SBIT
  • 文件内容的真正指向

如果发生inode已用光的情况,则无法在硬盘上创建新文件,即使磁盘还未存满

NO space left on device        ##磁盘空间已满

inode爆满如何解决

在服务器上有时存在许多日志文件,这些日志文件可能记载着用户信息而不能删除,这时因为占用太多节点号而使磁盘还有盈余但是却无法创建新文件,我们可以使用tar打包命令把它们打包为一个文件而使他们只占用一个节点号

有时也会有许多已经不重要的小文件,这是我们可以删除掉这些文件来释放inode,如果用rm -rf 直接删除基本是行不通的,会显示

Argument list too long        ##参数列表过长

删除的文件太多了

我们可以使用组合命令,例如

find . -ctime +7 -name "*" |xargs -i rm -rf {}

这条命令的意思为,删除当前目录下7天前所有数据,如果还报出参数列表过长就把时间调前一些,比如30天前 -ctime +30

4.3.2 block

存储着文件的实际内容,block对的大小可以自己设定

若文件太大,则一个文件会占用多个block,文件读取效率会降低

若文件很小,而block又打,则block剩下的空间将会浪费,磁盘利用率会降低

4.3.3 superblock

记录着文件的整体信息,包括inode和block的总量,使用量,剩余量等信息

4.3.4文件读取流程

首先,系统会找到文件名对应的inode号码

其次,通过inode号码,获取inode信息

最后,根据inode信息,找到文件数据所在的block,读出数据

4.4 硬链接,软链接

4.4.1硬链接

一般情况下一个文件只有一个inode号,但是linux系统允许多个文件名指向同一个inode号码,我们可以用不同的文件名访问同样的内容;对文件进行修改,会影响到所有文件名;但是删除其中一个文件名不影响另一个文件名的访问,这种情况就被称为"硬链接"(hard link)

ln 源文件 目标文件        ##创建硬链接

 可以看到file3和file4节点号是相同的

4.4.2软链接

软链接类似于硬链接,但是相比于硬链接,软链接使用的是不同的节点号;软链接依赖于源文件,当我们删除了源文件,软链接则会报错

ln -s 源文件 目标文件         ##创建软链接

 可以看到file5指向file3,这是我们删除file3

发现file5变红,使用cat  查看file5和file4

 

 可以正常查看file4但是显示file5不存在

4.5文件删除原理

linux是通过link的数量来删除文件的,只有当一个文件不存在任何的link时,文件才会被删除,一般来说,每个文件都会有两个link计数器:i_count和i_nlink

i_count:当前文件被调用的次数(内存计数器)

i_nlink:当前文件硬链接的数量(磁盘引用计数器)

rm命令原理:

通过rm删除命令删除文件,实际上就是减少文件的磁盘引用计数i_nlink的数量(即硬链接的数量)

4.6文本处理工具命令

4.6.1grep

grep用于进行文件搜索,使用格式为 grep [选项] 参数 文件名

常用选项:

  • -a 全部文件,不忽略二进制数据
  • -d 查找目录
  • -i 忽略字符大小的差别
  • -l 列出符合文件内容的文件名称
  • -q 不显示任何信息
  • -v 反转查找
  • -V 显示版本信息
  • -w 只显示全字符合的列
  • -x 只显示全列符合的列

常用参数:

  • ^ 锚定行的开始
  • $ 锚定行的结束
  • . 匹配一个非换行符的字符
  • * 匹配任意数量的先前字符
  • .* 匹配任意字符
  • [] 匹配一个指定范围内的字符
  • [^] 匹配一个不在指定范围内的字符
  • \(..\) 标记匹配字符
  • \< 锚定单词的开始
  • \> 锚定单词的结束
  • x\{m\} 重复字符x,m次
  • x\{m,\} 重复字符x,至少m次,
  • x{m,n\} 重复字符x,至少m次,不多于n次
  • \w 匹配文字和数字字符[A-Z a-z 0-9]
  • /w  匹配一个或多个非单词字符
  • \b 单词锁定符 只匹配 

POSIX字符

  • [:alnum:] 文字数字字符
  • [:alpha:] 文字字符
  • [:digit:] 数字字符
  • [:graph:] 非空字符
  • [:lower:] 小写字符
  • [:cntrl:] 控制字符
  • [:print:] 非空字符(包括空格)
  • [:punct:] 标点符号
  • [:space:] 所有空白字符(新航,空格,制表符)
  • [:upper:] 大写字符
  • [:xdigit:] 十六进制数字(0-9、a-f、A-F)

4.6.2cut

cut用于截取文本,处理的对象是一行文本,使用格式

cut -f 显示的列数 -d  '分割符'        ## -f后跟逗号 表示具体的哪一列 用-连接表示范围 -f 1,3 表示截取第一行和第三行 -f 1-3 表示截取1到3行

参数

  • -b 以字节为单位进行分割
  • -c 以字符为单位进行分割
  • -d 自定义分割符,默认为制表符
  • -f 与-d一起使用,指定显示哪个区域
  • -n 取消分割多字节字符,仅和-b 标志一起使用

4.6.3 sort 

sort命令用于将文本内容加以排序,sort可针对文本文件的内容,以行为单位来排序,shell种sort命令有三种模式,分别是排序文本,检查文件是否已经排序,合并文件

使用格式 sort [选项] 文件名

选项:

  • -f 忽略大小写
  • -b 忽略每行前面的空白部分
  • -n 以数值型进行排序,默认使用字符串排序
  • -r 反向排序
  • -u 删除重复行,就是uniq命令
  • -t 指定分隔符,默认分隔符是制表符
  • -k [n,m] 按照指定的字段范围排序,从第n个字段开始,到第m个字

4.6.4 uniq

uniq命令用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用。使用格式

uniq [选项] 参数 文本文件

选项:

  • -c 在每行开头增加重复次数
  • -d 所有临近重复行只被打印一次
  • -D 所有临近重复行全部打印
  • -i 忽略大小写差异
  • -s 跳过对前n个字符的比较
  • -u 只打印费邻近的重复行
  • -w 只对每行前n个字符进行比较

4.6.5 wc命令

wc命令用于统计指定文件中的字节数、字数、行数,并将统计结果显示输出

使用格式 wc [-选项] 文件名

选项:

  • -c 统计字节数
  • -l 统计行数
  • -m 统计字符数,不能与-c一起使用
  • -w 统计字数
  • -L 打印最长行的长度

4.6.6 paste

 paste 命令用于合并文件,合并格式为以列对列,一列列合并,

使用格式 paste [选项] 文件1 文件2

常用选项:

  • -d 改用指定列表里的字符替代制表分割符
  • -s 不使用平行的行目输出模式,而是每个文件占用一行

 4.6.7 tr

tr命令只要用于删除文件中的控制字符或进行字符替换,使用格式 tr [-选项] [参数] 字符串1 字符串2

选项:

  • -c 用字符串1中字符集的补集替换此字符集
  • -d 删除字符串1中的所有字符
  • -s 删除所有重复出现的字符序列,只保留一个

4.7 文件搜索命令

4.7.1 which

which 可以查看某个系统命令是否存在,以及命令所在位置,所以它只适用于二进制命令

使用格式 which 命令名称

4.7.2 whereis

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)、源代码文件(参数-s)如果省略参数,则返回所有信息

使用格式 whereis [-选项] [参数]

4.7.3 locate

locate命令用于查找符合条件的文档,查找文件或目录,locate要比find -name 快得多,因为它不搜索具体目录,而是搜索一个数据库 、var/lib/mlocate/mlocate.db 这个数据库中含有本地文件所有文件信息,linux系统自动创建这个数据库,并且每天更新一次,因此用whereis和locate查找文件时,有时会找到已经被删除的数据

使用格式 locate [-选项] 文件名 

注意使用locate前需要下载该命令

[root@localhost /]# yum install mlocate -y

再使用命令 updatedb 更新数据库才可以使用locate

 4.7.4 find

find 命令用来在指定目录下查找文件。find 命令具有很大的灵活性,可以向其指定丰富的搜索条件(如文件权限、属主、属组、文件类型、日期、大小等)来定位系统中的文件和目录

使用格式 find [路径] [选项] [操作]

选项:

  • -name 根据文件名查找
  • -perm 根据文件权限查找
  • -user 根据文件属主查找
  • -group 根据文件属组查找
  • -mtime -n/+n 根据文件更改时间查找
  • -newer file1 !file2 查找更改时间比file1新但是比file2旧的文件
  • -type 按文件类型查找
  • -size -n/+n 按文件大小查找
  • -mindepth n 从n级子目录开始搜索
  • -maxdepth n 最多搜索到n级子目录

逻辑运算符

-a        与

-o        或

-not | ! 非

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值