Linux文件系统与磁盘工作原理
磁盘为系统提供了最基本的持久化存储。 文件系统则在磁盘的基础上,提供了一个用来管理文件的树状结构。 “Linux 一切皆文件”的深刻含义。无论是普通文件和块设备、还是网 络套接字和管道等,它们都通过统一的 VFS 接口来访问。 索引节点和目录项文件系统,本身是**对存储设备上的文件 进行组织管理的机制。组织方式不同,就会形成不 同的文件系统。** 为方便管理,Linux 文件系统为每个文件都分配两个数据结构,索引节点(index node)和目录项(directory entry)。它们主要用来记录文件的元信息和目录结构。 索引节点,简称为 inode,用来记录文件的元数据,比如 inode 编号、文件大小、访问 权限、修改日期、数据的位置等。索引节点和文件一一对应,它跟文件内容一样,都会被 持久化存储到磁盘中。所以记住,索引节点同样占用磁盘空间。 目录项,简称为 dentry,用来记录文件的名字、索引节点指针以及与其他目录项的关联 关系。多个关联的目录项,就构成了文件系统的目录结构。不过,不同于索引节点,目录 项是由内核维护的一个内存数据结构,所以通常也被叫做目录项缓存。...
Linux文件系统的实验
Linux硬、软连接 硬连接:指向了同一个物理位置。建立连接之后,INODE是一样的,引用的个数增加。删掉原始的文件,只是把引用删除了。下面图片的1和2就是指物理文件被引用的个数,删除其中一个引用个数就是1了。而且stat显示的两个文件的INODE是一样的 ln /root/a.txt /root/ss.txt 软连接:指向了同一个物理位置,建立连接之后,**INODE是不一样的,引用的个数没变化。**删除原始文件的时候当前的软连接就会飘红报错 ln -s /root/a.txt /root/ss.txt 实验–自建文件系统挂载到系统目录一个命令:dd复制文件并对原文件的内容进行转换和格式化处理 1234567[root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=11+0 records in1+0 records out1048576 bytes (1.0 MB) copied, 0.006107 sec...
Linux文本编辑三剑客之awk
Linux 文本编辑三剑客之 awk Linux 文本处理三剑客是面试和后端工作中较为常见的。需要掌握: grep:文本过滤、筛选 sed:文本编辑加工 awk:文本格式化输出 文章只列举常用的,不会完全把手册复述一遍 本节内容基于正则表达式: 正则表达式借助正则表达式可以快速匹配、过滤需要的字符串,在 Linux 上处理大量文本比较高效。 一次处理一行 Linux 上只有文本处理工具三剑客(grep、sed、awk)常用,编程语言都有对应支持 扩展正则是基本正则的补充,一般结合三剑客使用建议直接使用扩展正则的写法,简洁 基本正则 符号 作用 ^ 模式匹配最左侧,^abc就是以abc开头 $ 模式匹配最右侧,abc$就是以abc结尾 ^$ 组合符。空行 . 任意一个且只有一个字符,不匹配空行 * 匹配前一个字符0或多次,不单独使用 .* 组合符。匹配任意多个字符 ^.* 组合符。匹配任意多个字符开头 .*$ 组合符。匹配任意多个字符结尾 \ 特殊字符还原本意,\.是小数点 [abc] 匹配集合内任意字符 [^abc]...
Linux文本编辑三剑客之grep
Linux 文本编辑三剑客之 grep Linux 文本处理三剑客是面试和后端工作中较为常见的。需要掌握: grep:文本过滤、筛选 sed:文本编辑加工 awk:文本格式化输出 本节内容基于正则表达式: 正则表达式借助正则表达式可以快速匹配、过滤需要的字符串,在 Linux 上处理大量文本比较高效。 一次处理一行 Linux 上只有文本处理工具三剑客(grep、sed、awk)常用,编程语言都有对应支持 扩展正则是基本正则的补充,一般结合三剑客使用建议直接使用扩展正则的写法,简洁 基本正则 符号 作用 ^ 模式匹配最左侧,^abc就是以abc开头 $ 模式匹配最右侧,abc$就是以abc结尾 ^$ 组合符。空行 . 任意一个且只有一个字符,不匹配空行 * 匹配前一个字符0或多次,不单独使用 .* 组合符。匹配任意多个字符 ^.* 组合符。匹配任意多个字符开头 .*$ 组合符。匹配任意多个字符结尾 \ 特殊字符还原本意,\.是小数点 [abc] 匹配集合内任意字符 [^abc] 匹配集合之外的字符 <>...
Linux文本编辑三剑客之sed
Linux 文本编辑三剑客之 sed Linux 文本处理三剑客是面试和后端工作中较为常见的。需要掌握: grep:文本过滤、筛选 sed:文本编辑加工 awk:文本格式化输出 本节内容基于正则表达式: 正则表达式借助正则表达式可以快速匹配、过滤需要的字符串,在 Linux 上处理大量文本比较高效。 一次处理一行 Linux 上只有文本处理工具三剑客(grep、sed、awk)常用,编程语言都有对应支持 扩展正则是基本正则的补充,一般结合三剑客使用建议直接使用扩展正则的写法,简洁 基本正则 符号 作用 ^ 模式匹配最左侧,^abc就是以abc开头 $ 模式匹配最右侧,abc$就是以abc结尾 ^$ 组合符。空行 . 任意一个且只有一个字符,不匹配空行 * 匹配前一个字符0或多次,不单独使用 .* 组合符。匹配任意多个字符 ^.* 组合符。匹配任意多个字符开头 .*$ 组合符。匹配任意多个字符结尾 \ 特殊字符还原本意,\.是小数点 [abc] 匹配集合内任意字符 [^abc] 匹配集合之外的字符 <>...
Linux查看一个文件的时候发生了什么?
Linux查看一个文件的时候发生了什么? 概念辨析整体的关系是这样的: 下面来逐个介绍图中的内容。 文件系统 磁盘文件系统:按照指定的格式和规则直接将数据存在磁盘中,Ext 2/3/4等等 拿到磁盘首先格式化为具体的磁盘文件系统,然后对磁盘分区。分区之后挂载到不同的操作系统目录(虚拟文件系统某一个节点),就可以使用了。 网络文件系统:类似于磁盘文件系统,也是特定场景特定格式的文件系统 虚拟文件系统:操作系统自己定义的规范,屏蔽不同磁盘文件系统的差异,提供统一接口给上层使用 虚拟文件系统也就是vfs,看做是一棵树: 这个树上的节点就是我们常见的文件夹名字,虚拟目录树是Linux的一个规范,结构是稳定化的。至于是哪一个文件系统挂载到这个树上的哪个节点是可以灵活改变的!!! df -h 查看虚拟目录树挂载的真正物理地址。磁盘分区(也就是**文件系统。都按照一定的文件系统规则进行了格式化****)挂载到VFS 树的不同目录节点,**其中系统启动会将内核的镜像文件系统(图中的/dev/sda1)加载之后,挂载到虚拟节点 /boo...
Linux的IO知识总结
文件系统,是对存储设备上的文件进行组织管理的一种机制。为了支持各类不同的文件系 统,Linux 在各种文件系统上,抽象了一层虚拟文件系统 VFS。 它定义了一组所有文件系统都支持的数据结构和标准接口。这样,应用程序和内核中的其他 子系统,就只需要跟 VFS 提供的统一接口进行交互。 在文件系统的下层,为了支持各种不同类型的存储设备,Linux 又在各种存储设备的基础 上,抽象了一个通用块层。 通用块层,为文件系统和应用程序提供了访问块设备的标准接口;同时,为各种块设备的驱 动程序提供了统一的框架。此外,通用块层还会对文件系统和应用程序发送过来的 I/O 请 求进行排队,并通过重新排序、请求合并等方式,提高磁盘读写的效率。 通用块层的下一层,自然就是设备层了,包括各种块设备的驱动程序以及物理存储设备。 文件系统、通用块层以及设备层,就构成了 Linux 的存储 I/O 栈。存储系统的 I/O ,通常 是整个系统中最慢的一环。所以,Linux 采用多种缓存机制,来优化 I/O 的效率,比方说, 为了优化文件访问的性能,采用页缓存、索引节点缓存、...
Linux系统目录(文件)结构
Linux系统目录(文件)结构 下方表格转载自: http://billie66.github.io/TLCL/book/chap04.html / 根目录,万物起源。 /bin 包含系统启动和运行所必须的二进制程序。 /boot 包含 Linux 内核、初始 RAM 磁盘映像(用于启动时所需的驱动)和 启动加载程序。有趣的文件:+ /boot/grub/grub.conf or menu.lst, 被用来配置启动加载程序。+ /boot/vmlinuz,Linux 内核。 /dev 这是一个包含设备结点的特殊目录。“一切都是文件”,也适用于设备。 在这个目录里,内核维护着所有设备的列表。 /etc 系统层面的配置文件。它也包含一系列的 shell 脚本, 在系统启动时,这些脚本会开启每个系统服务。这个目录中的任何文件应该是可读的文本文件。有趣的文件:+ /etc/crontab, 定义自动运行的任务。+ /etc/f...
Linux网络
本质上是一种进程间通信方式,跨系统的进程间通信, 网络模型国际标准化组织制定的**开放式系统互联通信参考模型**(Open System Interconnection Reference Model) OSI 网络模型。 OSI为了解决网络互联中异构设备的兼容性问题,并解耦复杂的网络包处理流程,OSI 模型把网络互联的框架分为应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层等七层 应用层,负责为应用程序提供统一的接口。 表示层,负责把数据转换成兼容接收系统的格式。 会话层,负责维护计算机之间的通信连接。 传输层,负责为数据加上传输表头,形成数据包。 网络层,负责数据的路由和转发。 数据链路层,负责 MAC 寻址、错误侦测和改错。 物理层,负责在物理网络中传输数据帧。 太复杂了,也没能提供一个可实现的方法。 TCP/IP在 Linux 中,是另一个更实用的四层模型,即 TCP/IP 网络模型。把网络互联的框架分为应用层、传输层、网络层、网络接口层等四层,其 中, 应用层,负责向用户提供一组应用程序,比如 HTTP、FTP、DNS ...
Linux网络实验
netstat12345netstat -natp# n 是直接获取IP而不是域名# a 所有的socket链接# t tcp# p 显示进程的名字以及pid tcpdump123tcpdump # 打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。# 监控eth0接口的网络情况 lsof123lsof -p pid# 显示Linux系统当前已打开的所有文件列表 # 可以用来查看监听的文件描述符 strace追踪后面的可执行程序的系统调用,会输出一些文件,查看文件里面就可以知道执行的一些具体的系统调用。 1strace -ff -o out /usr/java/javasdk/bin/java TestSocket 例如请求到来的时候会新建一个线程,执行clone方法 man 建立连接与接收数据(唯一连接–>唯一四元组–>唯一文件描述符)(内核握手与用户accept)开启服务端,不accept,只是开启端口 开启客户端,客户端连接服务端,三次握手建立sockcet连接,开辟资源(建立了文件描述符来描述这个四元组连接...