运维云计算SRE-第1周


 

1. 简单总结计算机发展相关历史,详细总结服务器硬件和计算机分类相关知识。

计算机发展相关历史

  1. 第一代(1946 - 1957 年):电子管计算机:这一阶段计算机的主要特征是采用电子管元件作基本器件,用光屏管或汞延时电路作存储器,输入和输出主要采用穿孔卡片或纸带,体积大、耗电量大、速度慢、存储容量小、可靠性差、维护困难且价格昂贵。软件上通常使用机器语言或汇编语言,主要用于科学计算。
  2. 第二代(1958 - 1964 年):晶体管计算机:晶体管的出现使计算机生产技术得到根本性发展,计算机的基础器件由电子管变为晶体管,用磁芯或磁鼓作存储器,整体性能大幅提高,程序语言也相应出现,如 FORTRAN、COBOL、ALGO160 等高级语言。晶体管计算机开始在数据处理、过程控制方面得到应用。
  3. 第三代(1965 - 1971 年):中小规模集成电路计算机:随着半导体工艺的发展,中小规模集成电路成为计算机的主要部件,主存储器过渡到半导体存储器,使计算机的体积更小,功耗降低,可靠性提高。软件方面有了标准化的程序设计语言和人机会话式的 BASIC 语言,应用领域进一步扩大。
  4. 第四代(1971 年 - 至今):大规模和超大规模集成电路计算机:大规模集成电路用于计算机硬件生产,计算机的体积进一步缩小,性能进一步提高。集成更高的大容量半导体存储器作为内存储器,发展了并行技术和多机系统,出现了精简指令集计算机(RISC),软件系统工程化、理论化,程序设计自动化,微型计算机在社会上的应用范围不断扩大。
  5. 第五代(未来):量子计算机和生物计算机:量子计算机利用量子力学原理,以量子比特进行计算,具有强大并行计算能力。生物计算机以生物分子为载体,如 DNA 和蛋白质等,具有体积小、能耗低、存储量大优势。两者虽前景广阔,但目前仍面临技术难题待突破。

服务器硬件和计算机分类

服务器硬件主要包括以下组成部分

中央处理器(CPU)

中央处理单元(CPU),作为计算机系统的心脏,集成了控制器与运算器两大核心模块,负责执行程序指令并处理数据。CPU的指令集体系主要分为CISC(复杂指令集计算机)与RISC(精简指令集计算机)两大流派。x86架构作为CISC的代表,广泛应用于桌面及服务器市场,占据主导地位;而ARM架构,作为RISC的典型代表,则在移动设备、物联网、5G及AI等新兴领域展现出强大竞争力。

CPU的主频,即其时钟频率,是衡量CPU运算速度的重要指标。一般而言,主频越高,处理速度越快,但需注意不同架构的CPU性能不能仅凭主频一概而论。此外,CPU内部的高速缓存(Cache)机制,包括L1、L2、L3三级缓存,对于提升数据处理效率至关重要,它能有效减少CPU对主存的访问次数,提高执行效率。

从体系架构角度看,服务器可分为x86架构与非x86架构两大类。x86服务器基于PC机体系,主要搭载Intel Xeon系列处理器,具有成本效益高、兼容性好等特点,但稳定性和安全性相对有限。非x86服务器则多采用RISC或EPIC处理器,常见于金融、电信等行业核心系统,以其卓越的稳定性和高性能著称,但成本较高且体系封闭。

主板(Mainboard)

主板是计算机系统的基石,集成了各种关键电路元件,包括BIOS芯片、I/O控制芯片、扩展插槽等,为计算机各部件提供连接与通信平台。其设计与质量直接影响到系统的整体性能与稳定性。

内存(RAM)

内存是CPU与外部存储之间的桥梁,负责暂存程序指令与数据,是计算机进行高速运算的关键资源。内存的速度与容量对系统性能有着决定性影响。与硬盘等外部存储设备相比,内存具有极高的存取速度,但容量相对有限,需根据实际需求合理配置。

硬盘(Storage)

硬盘是数据存储的核心部件,主要分为机械硬盘(HDD)与固态硬盘(SSD)两类。HDD基于磁性技术存储数据,成本低廉但读写速度较慢;SSD则采用NAND Flash技术,具备极高的读写速度、低延迟、抗震性强等优势,逐渐成为高端服务器的首选存储方案。然而,SSD的价格较高且容量有限,需根据应用需求权衡选择。

网卡(NIC)

网卡是服务器连接网络的接口设备,支持数据包的收发与转换。现代服务器普遍集成千兆网卡(1Gbps),部分高端服务器则采用万兆网卡(10Gbps/20Gbps)以满足高速网络传输需求。

远程管理卡(BMC/IPMI)

远程管理卡基于IPMI标准实现,为服务器提供独立于业务网络的远程管理接口。通过该接口,管理员可远程监控服务器状态、调整BIOS设置、配置RAID等,极大地提高了运维效率与便利性。

阵列卡(RAID Controller)

阵列卡负责实现RAID技术,通过数据条带化、冗余校验等方式提高存储系统的性能与可靠性。支持多种RAID级别(如RAID 0、1、5、6等),可根据应用需求灵活配置。阵列卡还具备缓存及电池保护功能,以确保数据在断电等异常情况下的安全性。

电源(Power Supply)

电源是服务器的动力源泉,支持冗余设计以防止单点故障。现代服务器电源系统还包括风扇等散热元件,共同确保服务器在长时间高负载运行下的稳定性与可靠性。

显卡(GPU)

尽管服务器主要面向数据处理而非图形渲染,但多数服务器主板仍集成有基本图形处理能力的显卡(GPU)。随着AI、大数据分析等应用的兴起,高性能GPU在服务器中的应用也日益广泛。

热插拔技术(Hot Swap)

热插拔技术允许在不中断服务器运行的情况下更换故障硬件(如硬盘、电源等),提高了系统的可用性与可维护性。结合RAID技术使用,可在不关机的情况下恢复故障硬盘上的数据,保障业务连续性。

机柜(Rack)

机架式服务器通常被放置在标准机柜中以便于管理与维护。常见机柜尺寸为42U(约2米高),内部空间需合理规划以容纳服务器、交换机、PDU等设备。合理的机柜布局与散热设计对于保障服务器稳定运行至关重要。

在硬件处理速度与性能优化的专业领域,聚焦于并发执行与缓存机制是至关重要的策略。CPU作为计算核心,其处理能力极为强大,因此必须高效利用以避免资源浪费。以下是更为专业化的阐述:

并发执行优化:

  1. 时间片轮转调度(Round-Robin Scheduling):为了满足多任务处理的需求,操作系统采用时间片轮转调度机制,将CPU时间划分为极短的时间片,并分配给不同的进程或线程执行。这种机制确保了CPU资源的公平分配与高效利用,通过快速上下文切换,创造出多个任务并行处理的错觉,即并发执行。

  2. I/O多路复用与异步处理:当CPU遇到I/O密集型操作时,如磁盘读写或网络通信,传统的阻塞等待会极大地降低系统效率。为此,采用I/O多路复用技术(如select, poll, epoll等)或异步I/O模型,允许CPU在等待I/O操作完成时继续执行其他任务,从而显著提高系统吞吐量与响应速度。

缓存机制优化:

  1. CPU缓存层次结构:CPU内部集成了多级缓存(L1, L2, L3),旨在减少CPU对主存(RAM)的访问次数,因为主存的访问速度远不及CPU内部缓存。L1缓存最接近CPU核心,速度最快但容量最小;L2缓存速度次之,容量增大;L3缓存则进一步增大容量,以覆盖更广泛的数据访问模式。

  2. 缓存一致性与替换策略:在多核CPU及多级缓存架构下,维护缓存一致性(如MESI协议)变得尤为重要,以确保各核心间数据的一致性。同时,采用高效的缓存替换策略(如最近最少使用LRU、最不经常使用LFU等),以优化缓存利用率,减少缓存未命中的情况。

  3. 热点数据优化:针对频繁访问的热点数据,通过应用层或数据库层的缓存机制(如Redis, Memcached等),将热点数据存储在速度更快的存储介质中,进一步减少对慢速存储(如硬盘)的依赖,提升数据访问速度与系统性能。

综上所述,通过精细的并发执行调度与高效的缓存机制优化,可以显著提升硬件处理速度与系统性能,满足现代应用对高性能、高并发、低延迟的需求。

计算机可以按照规模、功能、角色、外形进行划分。

按规模分类

超级计算机(Super Computer):被誉为巨型计算机,它们屹立于计算技术的巅峰,广泛应用于国防尖端科技及现代科学探索领域。其惊人的运算能力,轻松突破每秒百万亿次运算大关,如我国自豪的“天河一号”,便是首台达到千万亿次运算级别的超级计算机典范。

大型计算机:这些计算机以其卓越的运算速度和庞大的存储容量著称,每秒能执行数以千万计的指令,是科学计算、数据处理及网络服务的坚实后盾。例如,IBM z13 mainframe便是此类计算机中的佼佼者。

小型计算机:巧妙地平衡了性能与成本,采用精简指令集处理器,定位于PC服务器与大型主机之间的高性能64位计算领域。在中国市场,小型机常被用作UNIX服务器的代名词。

微型计算机:广泛普及于日常生活与工作中,采用X86 CPU架构,以其小巧的体积和微处理器芯片为核心,成为商业、服务业、自动化控制及办公自动化等领域的得力助手。随着技术的发展,微型计算机(如PC服务器)甚至在某些场景下取代了小型机的角色,如互联网公司推动的去IOE运动所展现的那样。

按功能分类

进一步细化,服务器可根据其承担的具体任务分为多种类型,包括但不限于Web服务器、数据库服务器、文件服务器、中间件应用服务器、日志服务器、监控服务器、程序版本控制服务器、虚拟机服务器、邮件服务器、打印服务器、域控制服务器、多媒体服务器、通讯服务器以及ERP服务器等,每一类服务器都在其特定领域内发挥着不可替代的作用。

按角色分类

服务器(Server):作为网络中的核心力量,服务器以其高性能为客户端提供全方位服务。在网络操作系统的精心调度下,服务器不仅共享其连接的存储资源和外设,如硬盘、磁带、打印机等,还承担着集中计算、信息发布、数据管理等重任,为网络用户构建了一个高效、便捷的信息交流平台。

客户机(Client):作为服务的请求者,客户机向服务器发出需求,依赖服务器提供的资源和服务来完成各项任务。在经典的C/S(客户端/服务端)模式下,角色并非固定不变,根据服务的需求与提供情况,双方可以灵活转换身份。

按外形分类
 

塔式服务器:作为服务器发展的早期形态,塔式服务器如今虽非主流,但其设计理念仍具参考价值。其外观与结构紧密仿照了常见的立式个人电脑(PC),提供了宽敞的机箱空间,以支持主板的广泛扩展能力,包括丰富的插槽配置。这一设计不仅便于日后的维护与升级,如增加硬盘和电源的冗余配置,还特别注重降噪处理,以确保运行环境的安静与稳定。

刀片式服务器:代表着服务器技术的高度集成与高效利用,刀片式服务器以模块化形式存在,多个服务器单元紧密排列于一个标准机架内,形成一个高性能、高密度的计算集群。这种设计不仅简化了管理流程,实现了资源的集中调配与共享,还赋予了系统极高的灵活性和可扩展性,能够按需配置,快速响应业务需求变化。在集群模式下,各刀片单元通过网络紧密连接,共同构建了一个高速、共享的资源池,为同一用户群体提供无缝的服务支持。

机架式服务器:作为当前服务器市场的主流选择,机架式服务器严格遵循统一的工业标准设计,与标准化机柜完美兼容,实现了空间的最大化利用与管理的便捷化。其机箱尺寸紧凑,以“U”为单位进行度量(1U相当于1.75英寸或44.45毫米),便于在机柜中高密度部署,有效节省空间资源。机架式服务器的宽度统一为19英寸(48.26厘米),而厚度则提供了从1U到7U等多种标准规格,以满足不同场景下的应用需求。同时,机柜本身也遵循通用的工业标准尺寸,如宽度600毫米、深度1000毫米、高度可达2000毫米(相当于42U),为机架式服务器的稳定运行提供了坚实的物理支撑。

2. 制作一个教程,说明vmware软件如何下载安装。安装rocky 系统, ubuntu 系统,并结合xshell演示如何通过虚拟IP登入系统。

VMware Workstation Pro 17下载安装教程

1、在broadcom的注册页面https://profile.broadcom.com/web/registration,利用邮箱账号注册broadcom账号,接收验证码验证身份信息,并填入个人信息创建账户;

2、利用注册的账号和密码登录broadcom主页;

3、在broadcom的主页https://support.broadcom.com,依次选择Software -> Mainframe Software -> My Downloads -> VMware Workstation Pro 17.0 for Personal User (Windows) -> 17.0.0,下载安装文件VMware-workstation-full-17.0.0-20800274.exe;

4、双击安装文件VMware-workstation-full-17.0.0-20800274.exe,点击下一步;

5、确认接收许可协议中的条款,点击下一步;

6、自定义安装位置,更改目标文件夹为D:\Program Files\VMware\VMware Workstation,选择确定。选择VMware Workstation控制台工具添加系统PATH,点击下一步;

7、在桌面和开始菜单添加VMware Workstation Pro的快捷方式,点击下一步;

8、取消启动时检查产品更新和加入VMware客户体验提升计划,点击下一步;

9、单击安装,开始安装VMware Workstation Pro,等待几分钟直至安装向导完成;

10、选择许可证,输入许可证密钥:MC60H-DWHD5-H80U9-6V85M-8280D

(vmware workstation 17 pro密钥最新大全_vm17pro密钥许可证-CSDN博客)点击输入,完成安装;

11、为了对VMware-workstation的设置有效,重新启动电脑;

VMware Workstation Pro 17安装rocky 系统教程

1、点击左上角 ”文件“,在下拉中选择第一项 “新建虚拟机”;

2、选择 “自定义(高级)C”,然后点击 “下一步”;

3、"硬件兼容性(H)" 使用默认值,点击 “下一步”;

4、选择 “稍后安装操作系统(S)”,点击 “下一步”;

5、“客户机操作系统”,选择第二项 “Linux”,版本选择 “CentOS 8 64位”,点击 “下一步”;

6、“虚拟机名称” 填写 “cc-rocky”,“位置” 不用更改,点击 “下一步”;

7. “处理器数量” 下拉,选择 “2”,其它项不变,点击 “下一步“;

8. ”此虚拟机内存(M)“,填写 2GB,点击 “下一步”;

9、 “网络类型” 选择第二项 “使用网络地址转换(NAT)(E)”,点击 “下一步”;

10、“SCSI控制器” 选择第二项 “LSI Logic(L) ”,点击 “下一步”;

11、 “磁盘” 选择第一项 “创建新虚拟磁盘”,点击 “下一步”;

12、“虚拟磁盘类型” 选择第二项 “SCSI(S)”,点击 “下一步”;

13、 “最大磁盘大小 (GB)(S): ” 填写 “200”,不要勾选 “立即分配所有磁盘空间(A)”,下方选择 “将虚拟机 磁盘存储为单个文件(O)”,点击 “下一步”;

14、“磁盘文件”,文件名用默认 "cc-rocky.vmdk",点击 “下一步”;

15、新建虚拟机向导完成,点击 “完成”;

16、编辑虚拟机设置,选择镜像文件,并设置启动时连接,选择确定;

17、选择开启虚拟机,采用快捷键Ctrl+G,进入安装页面,选择安装虚拟机,Enter键启动虚拟机安装;

18、安装语言选择英语;

19、首先,在安装系统之前需要完成各种设置,设置root用户密码和新建用户node,设置时间为Shanghai,开启以太网并将主机名设置为cc-rocky,选择磁盘自动分区,之后,选择开始安装;

20、系统安装完成之后重启系统,确认许可证信息,完成配置,之后出现登录界面,表示安装成功;


VMware Workstation Pro 17安装ubuntu 系统教程

1、点击左上角 ”文件“,在下拉中选择第一项 “新建虚拟机”;

2、选择 “自定义(高级)C”,然后点击 “下一步”;

3. "硬件兼容性(H)" 使用默认值,点击 “下一步”。

4. 选择 “稍后安装操作系统(S)”,点击 “下一步”。

5、“客户机操作系统”,选择第二项 “Linux”,版本选择 “Ubuntu 64位”,点击 “下一步”;

6、“虚拟机名称” 填写 “cc-ubuntu”,“位置” 不用更改,点击 “下一步”;

7. “处理器数量” 下拉,选择 “2”,其它项不变,点击 “下一步“;

8. ”此虚拟机内存(M)“,填写2GB,点击 “下一步”;

9、 “网络类型” 选择第二项 “使用网络地址转换(NAT)(E)”,点击 “下一步”;

10、“SCSI控制器” 选择第二项 “LSI Logic(L) ”,点击 “下一步”;

11、 “磁盘” 选择第一项 “创建新虚拟磁盘”,点击 “下一步”;

12、“虚拟磁盘类型” 选择第二项 “SCSI(S)”,点击 “下一步”;

13、 “最大磁盘大小 (GB)(S): ” 填写 “200”,不要勾选 “立即分配所有磁盘空间(A)”,下方选择 “将虚拟机 磁盘存储为单个文件(O)”,点击 “下一步”;

14、“磁盘文件”,文件名用默认 "cc-ubuntu.vmdk",点击 “下一步”;

15、新建虚拟机向导完成,点击 “完成”;

16、编辑虚拟机设置,选择镜像文件,并设置启动时连接,选择确定;

17、选择开启虚拟机,采用快捷键Ctrl+G,进入安装页面,选择安装虚拟机,Enter键启动虚拟机安装;

18、依次按照下面的步骤安装系统,直到安装完毕后重启,出现登录界面说明安装成功;

Xshell虚拟IP登录操作系统

1、菜单栏中依次选择,编辑->虚拟网络编辑器,VMnet8设置NAT模式,编辑子网IP和子网掩码,点击DHCP设置,选择IP的开始值和结束值,点击确定保存DHCP设置,点击确定保存VMnet8设置。

2、在终端输入命令ip -a,查看rocky系统的IP地址,新建xshell会话cc-rocky,输入连接名称和主机地址,以及用户和密码,点击确定,点击确定建立连接;

                

3、在终端输入命令ip -a,查看ubuntu系统的IP地址,新建xshell会话cc-ubuntu,输入连接名称和主机地址,以及用户和密码,点击确定建立连接;

3. 结合man命令总结linux常用基本命令用法,以及查看帮助文档的方法。

查看命令信息和命令历史信息

#查看命令信息
whereis COMMAND#列出命令或系统文件路径,以及其对应的man 手册中的文档路径
whatis  COMMAND#使用数据库来显示命令的简短描述,以及对应的man手册的章节
help COMMAND#查看内部命令COMMAND
man bash|help#查看所有内部命令
COMMAND --help|-h || info COMMAND#查看外部命令COMMAND
tldr COMMAND#查看命令COMMAND

#man命令
man COMMAND #默认打开第一章COMMAND帮助
man 5 COMMAND #指定第五章COMMAND帮助,章节不存在仍然为第一章节
man -a COMMAND #打开COMMAND所有帮助
man -f COMMAND | whatis COMMAND #显示COMMAND相关的章节
man -k  COMMAND #在man 手册中搜索所有与passwd 相关的内容,使用whatis 数据库
man -w COMMAND #显示COMMAND的man 文件路径
man -aw COMMAND #显示所有跟COMMAND有关的man文件路径
man -w 5 COMMAND #显示第5章的COMMAND的man文件路径

#查看历史信息
history -c #清空命令历史
history -d offset #删除历史中指定的第offset个命令
history n #显示最近的n条历史
history -a #追加本次会话新执行的命令历史列表至历史文件
history -r #读历史文件附加到历史列表
history -w #保存历史列表到指定的历史文件
history -n #读历史文件中未读过的行到历史列表
history -p #展开历史参数成多行,但不存在历史列表中
history -s #展开历史参数成一行,附加在历史列表后

man命令的使用方法
段落说明
  • NAME                                                      #名称及说明
  • DESCRIPTION                                        #详细说明
  • SYNOPSIS                                              #使用格式
  • FILES                                                       #相关文件
  • OPTIONS                                                 #选项
  • AUTHOR                                                  #作者
  • REPORTING BUGS                                #相关bug信息
  • COPYRIGHT                                           #版权及开源协议信息
  • EXAMPLES                                             #使用示例
  • SEE ALSO                                              #可参考其它部份
常用关键字及格式
  • []                              可选项
  • <>                           必选项
  • a|b                           二选一
  • ...                            同一内容可出现多次
  • { }                           分组
常用快捷键
  • e   |  ctrl+E  | j  |  ctrl+J | enter|往下方向键         往下一行
  • y   |  ctrl+Y  | k  | ctrl+K |ctrl+P|往上方向键         往上一行
  • z   |  f   |  ctrl+F |  ctrl+V|space                            往下一屏
  • w   |  b  | ctrl+B  |esc+v                                          往上一屏
  • d  |  ctrl+D                                                              往下半屏
  • u  |  ctrl+U                                                              往上半屏
  • 1G                                                                          回到首行
  • G                                                                            跳转至结尾
  • /abc                                                                        向下搜索abc n向下跳转,按N向上跳转
  • ?abc                                                                       向上搜索abc n向下跳转,按N向上跳转
  • q                                                                             退出

结合man命令使用基本命令

#man查看命令信息
man ascii#查看ascii编码
man bash#查看全部bash信息
man man#查看man页面分组

#echo命令和双引号、单引号、反向单引号、命令扩展符号
man echo #查看echo命令信息
echo "echo $HOSTNAME" #双引号不能识别命令,可以识别变量,输出echo ubuntu2204
echo 'echo $HOSTNAME' #单引号变量和命令都不识别,输出echo $HOSTNAME
echo `echo $HOSTNAME` #反向单引号变量和命令都识别,输出ubuntu2204

#常见文件操作命令
man mkdir#查看mkdir命令信息
man cd#查看cd命令信息
man touch#查看touch命令信息
man rm#查看rm命令信息
mkdir /abc #建立文件夹/abc
cd /abc #切换当前目录为/abc
touch {a..c}{1..10..3}.txt #命令扩展符号{},输出12个文件
rm -rf /abc #删除当前文件夹和文件夹内的内容

查看CPU信息
man lscpu #查看lscpu命令信息
man cat #查看cat命令信息
lscpu
cat /proc/cpuinfo

#查看内存
man free #查看free命令信息
free
cat /proc/meminfo
free -hs 1 #1秒钟刷新内存信息

#查看硬盘分区
man lsblk #查看lsblk命令信息
lsblk
cat /proc/partitions

#查看系统版本信息
man arch #查看arch命令信息
man uname #查看uname命令信息
arch#系统架构
uname -r #查看系统内核
cat /etc/os-release| lsb_release -a #查看系统发行版本
cat /etc/redhat-release #查看CentOS系统发行版本
cat /etc/issue #查看ubuntu系统发行版本

#时间
man date#查看date命令信息
date #查看当前时间信息
date -R #显示默认时区的时间信息
date +%s #显示当前时间的时间戳
date -d @`date +%s`#时间戳转换为特定时间格式
date -d @1683512505 #时间戳转换为特定时间格式
date -d @1683512505 +%F_%T #时间戳转换为指定时间格式
date -d "2023-05-08" +%s #日期转换为时间戳


#时钟校准(CentOS系统:clock ubuntu系统:hwclock)
man clock#查看clock命令信息
man hwclock#查看hwclock命令信息
man ll#查看ll命令信息
clock|hwclock -s|--hctosys #以硬件时钟校正系统时钟
clock|hwclock -w|--systohc #以系统时钟校正硬件时钟
ll /usr/sbin/clock  #查看CentOS时钟配置文件
ll /usr/sbin/hwclock  #查看ubuntu时钟配置文件

#时区
man timedatectl#查看timedatectl命令信息
timedatectl list-timezones #显示时区列表
timedatectl set-timezone Asia/Shanghai #时区设置为Asia/Shanghai
timedatectl status #显示时区信息
ll /etc/localtime #查看当地时间配置文件
cat /etc/timezone #查看时区配置文件


#日历
man cal#查看cal命令信息
cal  [OPTIONS] [[[day]month]year]  #查看日历

4. 总结linux文件系统相关知识,并结合操作演示文件操作常见的命令

linux文件系统相关知识

Linux 文件系统目录结构

根目录(/):
概述:这是所有文件和目录的起点,包含了系统启动和运行所必需的关键文件。
包含的子目录:/bin(存放基本命令的二进制文件)、/sbin(系统管理员命令二进制文件)、/etc(存放配置文件)、/var(存放可变数据)等。

/var 目录:
功能:用于存放在系统运行过程中会发生变化的数据,例如日志文件和邮件队列。
子目录:

/var/log:存放系统日志文件。
/var/run:存放运行中的进程数据,如进程ID文件。
/var/tmp:存放在系统重启之间需要保留的临时文件。
/usr 目录:
描述:包含用户应用程序和数据,这些通常不是系统维护和管理所必需的。
子目录:

/usr/bin:存放用户命令的二进制文件。
/usr/sbin:存放系统管理员使用的应用程序。
/usr/local:存放用户安装的程序和数据。
/proc 目录:
用途:这是一个虚拟文件系统,提供了一个接口来获取内核和进程的信息。
特点:它包含的文件是动态生成的,用于报告系统的状态。

/sys 目录:
用途:类似于/proc,但专注于提供系统上硬件设备的信息。
特点:它是一个虚拟文件系统,用于展示硬件设备的状态和参数。

/lib 和 /lib64:
描述:包含系统运行所需的库文件,分为32位和64位版本。
作用:这些库文件支持可执行文件和其他软件包在运行时的需求。

/home 目录:
用途:用于存放用户个人文件的目录,每个用户都有自己的主目录。
结构:通常以用户名命名子目录,例如/home/username。

/dev 目录:
描述:包含设备文件,例如硬盘和终端。
类型:包括块设备(b)和字符设备(c)。

/selinux 目录:
用途:用于存放SELinux(Security-Enhanced Linux)的安全策略信息。
重要性:通过细粒度的访问控制来增强系统的安全性。

文件和目录类型:

目录(d):用于存放其他文件和目录。
普通文件(-):用于存储数据,如文本文件和二进制文件。
链接文件(l):包括软链接和硬链接,用于引用文件。
设备文件(b, c):分别代表块设备和字符设备。
管道文件(p):用于进程间通信。
套接字文件(s):用于网络通信。
文件类型颜色标识:

普通文件:通常显示为白色。
目录文件:通常显示为蓝色。
符号链接文件:通常显示为浅蓝色。
块设备文件:通常显示为黄色。
字符设备文件:通常显示为黄色。
管道文件:可能显示为青黄色。
套接字文件:可能显示为粉红色。
图片文件:可能显示为粉红色,具体取决于配置。
压缩文件或文件包:通常显示为红色。
其他文件:通常显示为灰色。
 

文件操作命令
#文件操作
touch -a filename # 更新文件的访问时间(atime)和创建时间(ctime)
touch -m filename # 更新文件的修改时间(mtime)和创建时间(ctime)
touch -h|--no-dereference filename # 操作链接文件本身而非其指向的目标
touch -r|--reference filename # 复制指定文件的访问和修改时间到当前文件
touch -d|--date filename # 自定义文件的修改和访问时间
touch -c|--no-create filename # 文件不存在时不创建新文件
touch -t --time filename # 指定更新的时间为访问时间或修改时间

rm -i pathname # 删除前询问用户是否确认
rm -d|--dir pathname # 删除目录
rm -f|--force pathname # 强制删除文件
rm -r|-R|--recursive pathname # 递归删除目录及其内容
rm -rf pathname # 强制递归删除目录及其内容

pwd -P # 显示当前目录的完整物理路径
pwd -L # 显示当前目录的逻辑路径(默认)
ls -L pathname # 显示符号链接指向的实际路径
ls -a|--all pathname # 显示所有文件,包括隐藏文件
ls -l pathname # 显示文件的详细信息
ls -R|--recursive pathname # 递归显示目录内容
ls -d|--directory # 仅显示目录本身而非其内容
ls -1 pathname # 每行显示一个文件
ls -S pathname # 按文件大小排序
ls -t pathname # 按修改时间排序
ls -u pathname # 按访问时间排序
ls -U pathname # 按目录顺序排序
ls -X pathname # 按文件扩展名排序
ls -F|--classify pathname # 显示文件类型的指示符

cd pathname  # 切换到指定目录
cd -L pathname # 切换到符号链接指向的目录
cd -P pathname # 切换到物理路径指向的目录
cd .. # 返回上一级目录
cd | cd ~ # 切换到当前用户的家目录
cd ~username # 切换到指定用户的家目录
cd -| $OLDPWD # 切换到上一次所在的目录
basename pathnname # 获取路径中的最后一个部分
basename -s 后缀 pathnname # 获取不带后缀的文件名
dirname pathname  # 获取路径中除最后一个部分外的部分

stat -t|--terse filename # 简洁地显示文件信息
stat -f|--file-system filename # 显示文件系统信息
stat -c|--format filename # 指定格式显示文件信息
file -b|--brief  filename # 仅显示文件类型
file -f|--files-from FILE  filename # 从文件中读取要处理的文件名
file -F|--separator STRING  filename # 设置输出的分隔符
file  -L|--dereference filename # 解析符号链接

mv -b sourcepath targetpath  # 移动文件前先备份目标文件
mv -i|--interactive sourcepath targetpath # 移动前询问是否覆盖
mv -u|--update sourcepath targetpath # 仅当源文件更新时移动
mv -v|--verbose  sourcepath targetpath # 显示移动过程
mv -n|--no-clobber  sourcepath targetpath # 目标文件存在时跳过移动
cp -i|--interactive  sourcepath targetpath# 如果目标文件存在,则询问是否覆盖
cp -n|--no-clobber sourcepath targetpath# 目标文件存在时跳过复制
cp -R|-r|--recursive sourcepath targetpath # 递归复制目录
cp -a|--archive   sourcepath targetpath# 归档复制,保留所有属性
cp -s|--symbolic-link sourcepath targetpath # 创建符号链接而非复制文件
cp -p --preserve[=ATTR_LIST] sourcepath targetpath# 复制文件属性
cp -u|--update  sourcepath targetpath# 仅当源文件更新时复制
cp -v|--verbose sourcepath targetpath # 显示复制过程
cp -b  sourcepath targetpath # 复制前备份目标文件
cp --backup=numbered  sourcepath targetpath # 复制前备份目标文件,并添加数字后缀

#目录操作
tree -a pathname# 显示所有目录和文件,包括隐藏的
tree -d pathname# 仅显示目录
tree -f pathname# 显示完整路径
tree -F pathname # 显示可执行文件和目录
tree -g pathname # 显示文件组
tree -u pathname # 显示文件所有者
tree -p pathname # 显示文件权限
tree -s pathname # 显示文件大小
tree -i pathname # 非层级结构显示
tree -n pathname # 不使用颜色显示
tree -t pathname # 按修改时间排序
tree -r pathname # 反向显示
tree -a pathname -o filename # 输出到文件
tree -d -R n pathname # 显示n层目录
tree -D pathname # 显示目录修改时间
tree -C pathname # 彩色显示
mkdir -m|--mode    pathname # 设置目录权限
mkdir -p|--parents pathname # 递归创建父目录
mkdir -v|--verbose pathname # 显示创建过程

rmdir -p|--parents pathname # 递归删除父目录
rmdir -v|--verbose pathname # 显示删除过程

5. 总结操作系统概念相关视频的知识点

操作系统概念相关知识点

1、操作系统概述

1.1 操作系统定义

  • 定义:操作系统(Operating System, OS)是管理计算机硬件和软件资源的计算机程序,是用户和计算机之间的接口,同时也是计算机硬件和其他软件的桥梁。
  • 作用:操作系统负责管理和协调计算机的硬件和软件资源,确保计算机系统的正常运行。

1.2 操作系统的功能

  • 资源管理:管理计算机的硬件资源(如CPU、内存、磁盘等)和软件资源(如程序、数据等)。
  • 用户接口:提供用户与计算机交互的界面,包括命令行界面(CLI)和图形用户界面(GUI)。
  • 进程管理:创建、调度、监控和终止进程,确保系统的并发执行和高效运行。
  • 文件系统管理:组织和存储计算机系统中的文件和数据,提供文件的访问、保护和共享等功能。
  • 存储管理:管理内存和外存的使用,实现虚拟内存和磁盘空间的有效分配和回收。
  • 设备管理:管理计算机系统中的各种输入输出设备,包括键盘、鼠标、显示器、打印机等。
  • 网络功能:支持计算机之间的通信和数据传输,实现网络资源的共享和管理。

2. 操作系统类型与分类

2.1 操作系统类型

  • 批处理操作系统:用户提交作业给系统,系统按照某种策略(如先来先服务、优先级等)自动处理作业,用户与作业无交互。
  • 分时操作系统:允许多个用户同时在线使用计算机,系统将CPU时间划分为多个时间片,轮流为每个用户服务。
  • 实时操作系统:能够在规定时间内完成特定功能的操作系统,通常用于需要高度可靠性和实时响应的系统(如工业控制、航空航天等)。
  • 网络操作系统:支持计算机网络的操作系统,能够管理网络中的资源和服务,实现计算机之间的通信和资源共享。
  • 分布式操作系统:将分布在不同地点的计算机连接起来,形成一个逻辑上统一的整体,实现资源的共享和管理。

2.2 操作系统分类

  • 按用户界面分类:命令行界面(CLI)操作系统和图形用户界面(GUI)操作系统。
  • 按内核管理方式分类:单内核操作系统(如Linux、Windows)和微内核操作系统(如Mach、QNX)。
  • 按应用环境分类:服务器操作系统(如Linux、Windows Server)、桌面操作系统(如Windows、macOS、Ubuntu)、嵌入式操作系统(如RTOS、Linux for Embedded)等。

3. 操作系统相关概念

3.1 进程与线程

  • 进程:是系统进行资源分配和调度的一个独立单元,是具有一定独立功能的程序关于某个数据集合的一次运行活动。进程是系统资源分配的最小单位。
  • 线程:是进程中的一个实体,是CPU调度和分派的基本单位,它是比进程更小的独立运行的单位。线程也被称为轻量级进程。
  • 区别与联系:进程是资源分配的最小单位,线程是CPU调度的最小单位。一个进程可以拥有多个线程,线程之间共享进程的资源(如内存空间、文件描述符等)。

3.2 并发与并行

  • 并发:指两个或多个事件在同一时间间隔内发生,但这些事件并不是同时发生的。在操作系统中,并发通常通过时间片轮转、进程调度等机制实现。
  • 并行:指两个或多个事件在同一时刻发生,即这些事件是同时进行的。并行需要硬件支持(如多核CPU、GPU等),能够显著提高系统的处理能力和效率。

3.3 虚拟内存

  • 定义:虚拟内存是一种内存管理技术,它将一部分硬盘空间作为内存使用,以扩展内存的实际容量。
  • 原理:当系统需要访问某个内存地址时,如果该地址在物理内存中不存在(即发生了缺页中断),则操作系统会将硬盘上的一个页面(通常为4KB)调入物理内存,并将该页面映射到虚拟内存空间中。
  • 作用:虚拟内存能够提高内存的利用率和系统的并发性能,减少内存溢出(OOM)等问题的发生。

3.4 系统调用与库函数

  • 系统调用:是操作系统提供给应用程序的接口,用于实现特定的系统功能(如文件操作、进程管理、网络通信等)。系统调用通过中断机制实现,具有执行效率高、权限控制严格等特点。
  • 库函数:是程序员编写的、用于实现特定功能的函数集合。库函数通常封装了系统调用的细节,提供更高层次的抽象和更方便的接口

Linux操作系统相关知识点

概述

Linux是一种开源的计算机操作系统,由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年首次发布。Linux通常与GNU套件一起使用,因此也被称为GNU/Linux。它是一种类UNIX的操作系统,设计为多用户、多任务和多线程的操作系统,支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统,广泛应用于服务器、超级计算机、嵌入式设备、移动设备等领域。

历史与发展

Linux的起源可以追溯到1991年,当时林纳斯·托瓦兹(Linus Torvalds)为了能在自己的Intel 80386 PC上运行Unix,决定开发一个免费的Unix克隆版本,这就是Linux操作系统的诞生。最初,Linux只是一个简单的内核,但随着时间的推移,许多开发者贡献了自己的代码,逐渐形成了今天的Linux操作系统。

Linux的发展得益于其开源特性,这意味着任何人都可以查看、修改和分发源代码。这种开放性促进了Linux的快速发展和广泛应用。目前,Linux已经发展出了多个不同的发行版,如Debian、Ubuntu、CentOS、Fedora等,每个发行版都有其独特的特点和用途。

主要特点

1. 稳定性和安全性

Linux操作系统以其稳定性和安全性而闻名。Linux的内核设计非常注重安全性和稳定性,采用了多种机制来防止系统崩溃和数据泄露。此外,Linux的开源特性也使得其能够及时发现和修复安全漏洞,进一步提高了系统的安全性。

2. 开源和自由

Linux是开源的,这意味着任何人都可以查看、修改和分发其源代码。这种开源特性促进了技术创新和协作,使得Linux生态系统中的软件和应用程序不断更新和完善。同时,开源也降低了使用Linux的成本,因为用户可以免费获取和分发Linux系统及其软件。

3. 多用户和多任务

Linux支持多用户和多任务,允许多个用户同时在系统上工作,每个用户都可以运行多个任务。这种设计使得Linux非常适合作为企业级服务器操作系统,可以支持大规模的用户和应用程序。

4. 良好的兼容性

Linux能够运行主要的UNIX工具软件、应用程序和网络协议,这意味着用户可以在Linux系统上无缝地迁移和运行旧的UNIX应用程序。此外,Linux还支持多种硬件设备和文件系统,使得用户可以根据自己的需求选择合适的硬件和文件系统。

系统架构

Linux系统由多个部分组成,包括内核、Shell、系统调用接口、文件系统、网络协议栈等。其中,内核是Linux系统的核心部分,负责管理硬件资源、提供系统服务、实现进程管理等功能。Shell是用户与Linux系统交互的界面,用户可以通过Shell输入命令来执行各种操作。系统调用接口是用户程序与内核之间的接口,用户程序通过系统调用来请求内核服务。文件系统是Linux中存储和组织数据的方式,Linux支持多种文件系统类型,如EXT4、Btrfs、XFS等。网络协议栈是Linux中实现网络通信的部分,支持TCP/IP等多种网络协议。

安装与配置

安装流程

安装Linux系统的流程大致可以分为以下几个步骤:

  1. 下载ISO镜像文件:从Linux发行版的官方网站下载最新版本的安装镜像。
  2. 准备安装媒介:将ISO镜像文件刻录到U盘或DVD上,作为安装媒介。
  3. 重启计算机并进入BIOS/UEFI设置:在启动时按下特定的键(如F2、Del等)进入BIOS/UEFI设置界面。
  4. 调整启动顺序:在BIOS/UEFI设置中,将启动顺序调整为从USB驱动器或DVD驱动器启动优先。
  5. 保存设置并退出BIOS/UEFI:计算机将会从USB或DVD启动,进入Linux安装程序界面。
  6. 选择安装语言和安装类型:选择安装语言,并选择合适的安装类型(如自动分区、手动分区或使用整个磁盘安装)。
  7. 设置用户名、密码和主机名:设置系统的基本配置信息,如用户名、密码和主机名。
  8. 开始安装:等待系统文件复制到硬盘上,安装完成后重启计算机。
  9. 进入新安装的Linux系统:进行初次登录,并根据需要安装图形界面、无线网卡驱动、办公软件等。

系统配置

安装完成后,用户需要根据自己的需求对Linux系统进行配置。常见的系统配置包括:

  1. 网络配置:配置网络接口、IP地址、子网掩码、网关和DNS服务器等,确保系统能够正常连接到网络。
  2. 用户管理:添加新用户、设置用户密码、管理用户权限等,确保系统的安全性和易用性。
  3. 服务管理:管理服务进程,包括启动、停止、重启和查看服务状态等,确保系统服务的正常运行。
  4. 软件管理:使用软件包管理器(如APT、YUM、DNF等)安装、
6. 总结常用命令部分的命令使用和演示,最好带有注释信息

命令结构

命令格式

  1. 基本格式

    命令 [选项...] [参数...]

    其中,命令是执行的操作,选项用于调整命令的行为(如开启或关闭特定功能),参数指定命令操作的对象(如文件名、用户名等)。

  2. 命令组合

    命令 [命令] [命令] ...

    表示可以连续执行多个命令,每个命令之间可以独立存在,但在此格式下它们是作为整体被考虑的。

组件解释

  • 命令(COMMAND):执行的具体指令或操作。

  • 选项(OPTIONS):跟随命令后的标记,用于修改命令的默认行为。

  • 参数(ARGUMENTS):命令作用的具体目标或输入,如文件名、用户名等。

符号说明

  • [ ]:方括号内的内容表示可选的,即执行命令时可以不包含这些部分。

  • ...:省略号表示前面的项目(选项或参数)可以重复多次,即可以有多个选项或多个参数。

选项风格

  • 短选项:采用UNIX风格,以单个短横线-开头,后跟一个字母,如-l-h

  • 长选项:GNU风格,以两个短横线--开头,后跟一个或多个单词,如--all--human

  • BSD风格:较少使用,仅由一个字母组成,无短横线前缀,如a

使用注意事项

  • 分隔符:多个选项、参数及命令之间应使用空白字符(如空格、制表符)分隔。

  • 取消执行:可以使用Ctrl+c中断当前命令的执行,Ctrl+d通常用于结束输入(在终端中)。

  • 命令分隔:可以在一行中使用;分隔多个命令,使其依次执行。

  • 换行续写:若命令过长,可以使用\将其分为多行书写,以提高可读性。

bash shell 终端的使用

  • Ctrl + l                     清屏,相当于clear命令
  • Ctrl + o                     执行当前命令,并重新显示本命令
  • Ctrl + s                     阻止屏幕输出,锁定
  • Ctrl + q                     允许屏幕输出,解锁
  • Ctrl + c                      终止命令
  • Ctrl + z                      挂起命令
  • Ctrl + a                       光标移到命令行首,相当于Home
  • Ctrl + e                       光标移到命令行尾,相当于End
  • Ctrl + f                        光标向右移动一个字符
  • Ctrl + b                       光标向左移动一个字符
  • Ctrl + xx                      光标在命令行首和光标之间移动
  • ctrl+ >(方向键)            光标向右移动一个单词尾,相当于 Alt + f
  • ctrl+ <(方向键)             光标向左移动一个单词首,相当于 Alt + b
  • Ctrl + u                        从光标处删除至命令行首
  • Ctrl + k                         从光标处删除至命令行尾
  • Alt + r                            删除当前整行
  • Ctrl + w                         从光标处向左删除至单词首
  • Alt + d                           从光标处向右删除至单词尾
  • Alt + Backspace            删除左边单词
  • Ctrl + d                          删除光标处的一个字符
  • Ctrl + h                          删除光标前的一个字符
  • Ctrl + y                          将删除的字符粘贴至光标后
  • Alt + c                            从光标处开始向右更改为首字母大写的单词
  • Alt + u                            从光标处开始,将右边一个单词更改为大写
  • Alt + l                             从光标处开始,将右边一个单词更改为小写
  • Ctrl + t                           交换光标处和之前的字符位置
  • Alt + t                            交换光标处和之前的单词位置
  • Alt + #                           提示输入指定字符后,重复显示该字符#次

查看命令和使用命令

# type COMMAND 判断命令类型
type COMMAND  #查看看当前命令
type -t COMMAND #查看命令类型 builtin|alias|file|keyword
type -a COMMAND #查看所有命令

#内部命令相关命令
enable   #查看所有启用的内部命令
enable COMMAND #启用内部命令pwd 
enable -n COMMAND  #禁用内部命令pwd 
enable -n  #禁用所有内部命令

#外部命令相关命令
which  -a |--skip-alias  COMMAND  #查看所有外部命令并忽略别名 
whereis  COMMAND  #查看外部命令
echo $PATH   #查看外部命令的搜索路径

#hash相关命令
hash   #显示当前终端进程中的hash缓存
hash -l #显示hash列表
hash -p /pwd.sh COMMAND #手动创建hash缓存
hash -t COMMAND #输出pwd的路径
hash -d COMMAND #删除指定hash
hash -r #清空所有hash

#别名相关命令
alias #显示当前shell进程所有别名
alias name #查看指定别名
alias NAME='COMMAND' #定义别名NAME,其相当于执行命令COMMAND
unalia sname #撤消别名

命令执行顺序

#验证命令执行顺序
#别名 -----> 内部命令 ------>hash(自设命令缓存>外部命令缓存)--->外部命令

type pwd #查看默认命令
type -a pwd #查看所有命令
alias pwd='ll' #将pwd的别名设置为ll
pwd #调用pwd命令
type pwd #查看默认命令
type -a pwd #查看所有命令 

touch /pwd.sh #创建bash脚本
nano /pwd.sh #编辑bash脚本

  #!/bin/bash
  echo "Hello, World!"

chmod +x /pwd.sh #添加脚本执行权限
hash -p /pwd.sh  pwd #将pwd命令添加到缓存
pwd #调用pwd命令
type pwd #查看默认命令
type -a pwd #查看所有命令

unalias pwd #去除ll的别名
type pwd #查看默认命令
type -a pwd #查看所有命令
pwd #调用pwd命令

enable -n pwd #禁用内部pwd命令
pwd #调用pwd命令
type echo #查看默认命令
type -a echo #查看所有命令

hash -d pwd #清除自设hash表缓存命令
pwd #调用pwd命令
type pwd #查看默认命令
type -a pwd #查看所有命令

hash #查看hash缓存表
hash -d pwd#清除外部命令的hash表缓存
type pwd #查看默认命令
type -a pwd #查看所有命令

enable pwd #开启内部命令

常见命令

查看终端信息
tty #查看当前终端
cho ${SHELL} #查看当前终端的shell
cat /etc/shells#查看当前终端的shell
echo $PS1 #查看当前终端的命令提示符
echo $LANG #查看当前终端的语言环境

#用户登录信息
who -m|whoami #显示当前终端登录用户
who#当前登录所有会话
who -u | --users #列出当前主机上所有用户的空闲时间
who -s | --short #列出在当前主机上所有登录用户,等同于who
who -q | --count #登录用户统计
who -b | --boot #上次系统启动时间
who -a | --all #多选项组合
w#当前登录所有会话和操作

#会话操作
screen –S [SESSION] #创建新screen会话  
screen –x [SESSION] #加入screen会话
screen -r [SESSION] #恢复某screen会话,Ctrl+a,d #剥离当前screen会话
screen -ls #显示所有已经打开的screen会话
exit #退出screen会话


#修改登录前提示
#本地登录
cat /etc/issue
cat /etc/issue.d/*.issue
#SSH登录
vim /etc/ssh/sshd_config #修改sshd配置文件
service sshd restart #重启sshd 服务

#修改登录后提示
#CentOS系统
cat /etc/motd
cat /etc/motd.d/
#ubuntu系统
cat /etc/update-motd.d/


#关机和重启
shutdown -h now|halt|poweroff|init 0 #立即关机
shutdown #60秒后关机
shutdown +10 #10分钟后关机
shutdown 01:02 #定时01:02关机
shutdown -H|--halt #60秒后调用halt关机
shutdown -P|--poweroff #60秒后调用poweroff关机
shutdown -c #取消关机
shutdown -r now|reboot|init 6 #立即重启
shutdown -r|--reboot #60秒后重启

查看终端和用户身份信息 ;

终端会话操作,建立会话,加入会话,查看会话,退出会话;

 修改终端登录前和登录后提示;

7. 总结通配符,管道,重定向,inode知识点,并且结合示例,添加注释信息 

文件通配符总结:

通配符:使用特定的元字符(meta characters)来匹配符合条件的多个文件,极大地提高了文件操作的便捷性。


常见通配符:
*:匹配零个或多个字符,但不包括以.开头的隐藏文件。
?:匹配任意单个字符,包括汉字。
~、.、~+、~-、~用户名:分别表示当前用户家目录、当前工作目录、当前工作目录的另一种表示、前一个工作目录、指定用户的家目录。


另外还有在Linux系统中预定义的字符类表示法
字符类:提供了一套丰富的预定义模式,用于匹配特定类型的字符或字符集合。
常见字符类:
[0-9]、[a-z]、[A-Z]:分别匹配数字范围、小写字母范围、大写字母范围。
[wang]:匹配列表中指定的任意一个字符。
[^wang]、[^a-z]:匹配不在列表中的字符。
[:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]:分别匹配任意数字、任意小写字母、任意大写字母、任意大小写字母、任意数字或字母。
[:blank:]、[:space:]、[:punct:]、[:print:]、[:cntrl:]、[:graph:]、[:xdigit:]:分别匹配水平空白字符、水平或垂直空白字符、标点符号、可打印字符、控制(非打印)字符、图形字符、十六进制字符。

#通配符匹配文件
ll a* # 匹配所有以字母 'a' 开头的文件和目录
ll a # 匹配所有包含字母 'a' 的文件和目录
ll ? # 匹配所有只有一个字符的文件和目录
ll ?? # 匹配所有只有两个字符的文件和目录
ll b[4-5]## 匹配所有以 'b' 开头,后跟 '4' 或 '5' 的文件和目录
ll b[^4-5]# 匹配所有以 'b' 开头,后跟非 '4' 和 '5' 的文件和目录
ls [[:lower:]][1-5]# 匹配所有以小写字母开头,后跟数字1到5的文件

#对比包含与不包含*的情况
ls *      
ls -a *   
ls .*         
ls -d .*  

管道和重定向的总结:

管道:
定义:管道是Linux系统中一种基本的进程间通信机制,用于将一个命令的输出作为另一个命令的输入。
符号:使用竖线|作为管道符号。
功能:实现了命令之间的数据传递,使得可以串联多个命令来执行复杂的任务。

I/O重定向:
定义:I/O重定向是将程序的标准输入(stdin)、标准输出(stdout)或标准错误输出(stderr)从它们的默认位置(通常是键盘和屏幕)改变到文件或其他命令中。
符号:
>:将标准输出重定向到文件(覆盖文件原有内容)。
>>:将标准输出追加到文件末尾。
<:将标准输入重定向自文件。
2>:将标准错误输出重定向到文件(覆盖)。
2>>:将标准错误输出追加到文件末尾。

tr命令
定义:tr是Linux系统中用于字符转换和删除的实用工具,它读取标准输入并输出转换后的结果到标准输出。
操作:支持字符转换、删除和压缩连续重复字符。
主要选项:
-c 或 --complement:替换不在第一组中的字符为第二组字符。
-d:删除第一组中的所有字符。
-s 或 --squeeze-repeats:删除第一组中重复的字符。
-t:替换第一组中的字符为第二组字符,如果第二组字符不足则忽略。
字符集:
[:alnum:]:字母和数字。
[:alpha:]:字母。
[:digit:]:数字。
[:lower:]:小写字母。
[:upper:]:大写字母。
[:space:]:空白字符。
[:print:]:可打印字符。
[:punct:]:标点符号。
[:graph:]:可见字符。
[:cntrl:]:控制字符。
[:xdigit:]:十六进制数字。

tee命令
定义:tee命令是一个命令行实用工具,它从标准输入读取数据,并同时将数据输出到标准输出和一个或多个文件。
常用选项:
-a 或 --append:向文件末尾追加内容而不是覆盖。
-i 或 --ignore-interrupts:忽略中断信号,允许处理完成当前行。
--help:显示命令的帮助信息。
--version:显示命令的版本信息。
基本用法:
tee filename:将标准输入的数据写入filename,并输出到标准输出。
tee -a filename:将标准输入的数据追加到filename,并输出到标准输出。

#重定向操作
cat fstab > out.log # 将标准输出写入文件,覆盖原有内容
cat fstab >> out.log # 将标准输出追加到文件末尾
cat null 2> err.log # 将标准错误写入文件,覆盖原有内容
cat null 2>> err.log # 将标准错误追加到文件末尾
cat fstab > /dev/pts/1 # 将输出发送到另一个终端
ls fstab null > out.log 2> err.log # 同时重定向标准输出和标准错误到不同文件
ls fstab null 2> out.log 1>&2 # 将标准输出和标准错误重定向到同一个文件
cat /dev/null > /data/file.log # 清空文件内容
(ls fstab null 3>&1 1>&2 2>&3)>right.out 2>err.out # 交换标准输出和标准错误
cat <<EOF # 读取多行文本,直到遇到EOF标记
tr 'a-z' 'A-Z' <<< "welcome to magedu" # 将输入字符串的小写字母转换为大写
bc <<< seq -s + 3 # 计算输入的表达式
bc < <(seq -s + 3) # 计算输入的表达式

tr命令操作
tr [:lower:] [:upper:] # 将小写字母转换为大写字母
123abc
tr -c 123 x # 将非数字123的字符替换为x
13579
tr -d [:upper:] # 删除所有大写字母
123abcABC456
tr [:lower:] [:upper:] <out.txt > outs.txt # 将文件中的小写字母转换为大写,并重定向输出到新文件
seq -s + 10 > a.txt;bc<a.txt>rs.txt # 将表达式写入文件并计算,输出结果到新文件

tee命令和管道操作
tee -a|--append            tee.log # 将内容追加到文件而不是覆盖
tee -i|--ignore-interrupts tee.log # 在执行过程中忽略中断信号
tee -p                     tee.log # 写入时排查错误,不用于管道
ls fstab null 2>&1 | tr 'a-z' 'A-Z' # 使用管道将标准输出和标准错误传递给tr命令
ls fstab null |& tr 'a-z' 'A-Z' # 使用双管道符将标准输出和标准错误传递给tr命令
echo $PATH | tr ':' '\n' | sort # 使用管道对路径进行排序
ifconfig | head -n 2 | tail -n 1 | tr -s ' ' | cut -d" " - f3 # 使用管道和字符串操作提取信息
echo hello | tr 'a-z' 'A-Z' | tee -a tee.log # 将字符串转换为大写并追加到文件中

inode知识点总结:

文件元数据(Metadata):
定义:文件元数据是描述文件属性的数据,它不包括文件名和文件内容本身。元数据对于操作系统管理和访问文件至关重要。
内容:包括文件的类型(如普通文件、目录、字符设备等)、大小、创建和修改时间、权限(读、写、执行)、链接数(有多少文件名指向这个节点)、数据块位置等。
查看:可以使用stat命令查看文件的详细元数据。例如,stat /etc/fstab会显示该文件的权限、所有者、大小、时间戳等详细信息。


节点表(Inode Table):
定义:节点表是存储文件元数据的区域,每个文件在Linux中都有一个对应的inode(索引节点),inode中包含了文件的全部元数据,但不包括文件名。
结构:磁盘在格式化时,会被分为inode区和数据区。inode区存储文件的inode,数据区存储文件的具体内容。inode编号是唯一的,但在文件删除后,inode编号可以被回收重用。
功能:通过inode,系统可以获取所有关于文件的信息,而不需要读取文件本身的内容。inode还支持快速的系统调用,如确定文件类型、大小、权限等。
示例:当使用stat命令查看文件时,输出的Inode字段即为该文件的inode编号。例如,stat /etc/fstab中的Inode: 3277488表示/etc/fstab文件的inode编号为3277488。
inode与文件名:
关系:文件名和inode之间是通过目录项(dentry)来链接的。目录项缓存了文件名和inode之间的映射,提高了文件访问的效率。
查找:当系统需要访问一个文件时,它会首先通过文件名在目录项中查找对应的inode编号,然后通过inode编号访问文件的实际数据。
inode的重要性:
唯一性:inode是文件的唯一标识,即使两个文件名不同,只要它们指向同一个inode,那么它们就是同一个文件。
数据恢复:在文件被删除但inode和数据块未被覆盖的情况下,理论上可以通过inode恢复文件内容。
性能优化:inode的设计使得系统可以高效地管理和访问大量文件,支持快速的文件查找、权限检查等操作。

拷贝(cp)、删除(rm)、移动(mv)命令对inode的影响总结:

拷贝(cp)命令:
inode 变化:运用 cp 命令进行文件拷贝操作时,系统会给新文件分配一个全新的 inode 号。即便源文件与目标文件的内容毫无二致,新文件的 inode 中所存储的元数据虽与源文件相同,但 inode 号具有唯一性。
磁盘数据:文件的实际数据块(block)会被复制至新文件对应的 inode 所指向的数据块当中。
删除(rm)命令:
inode 变化:当借助 rm 命令删除文件时,该文件的 inode 链接数(links count)会减少一个单位。倘若这是针对该文件的最后一个链接(也就是说,没有其他文件名或者目录项指向这个 inode),那么该 inode 号就会被释放回 inode 表内,以便未来新文件使用。不过,此时文件的数据块并不会立刻从磁盘上被删除,而是被标记为可再次使用。
磁盘数据:被删除文件的数据块实际上不会马上从磁盘上消失,只有等到这些空间被新的数据块覆盖时才会真正被删除。
移动(mv)命令:
同一文件系统内:在同一文件系统中移动文件时(即 mv 命令的源文件和目标文件位于同一个文件系统内),文件的 inode 号保持不变,仅仅是文件名(也就是目录项)发生了改变。系统会删除旧的目录项(包含旧文件名和 inode 号的映射关系),并在目标目录下创建新的目录项。在此过程中,并不涉及数据块的移动,因为文件内容依旧存储在原来的 inode 所指向的数据块里。
跨文件系统:倘若 mv 命令的源文件和目标文件处于不同的文件系统上,那么实际上是在执行拷贝和删除这两个操作。首先,源文件的内容会被拷贝到目标文件系统中,并且为新文件分配一个新的 inode 号。接着,源文件(及其 inode)会被删除。在这种情况下,数据的物理位置会发生改变。

#文件系统相关命令
df -Th  # 显示文件系统类型和使用情况,其中"T"表示类型,"h"表示易读的格式
df -i  # 显示文件系统的inode使用情况
df -lh # 显示磁盘分区的使用情况,"l"表示不跟踪符号链接,"h"表示易读的格式
ln filename linkname# 创建指向文件的硬链接
ln -s filename linkname# 创建指向文件的符号链接(软链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值