1. 简单总结计算机发展相关历史,详细总结服务器硬件和计算机分类相关知识。
(1)计算机发展相关历史
1)第一代(1946 - 1957 年):电子管计算机:这一阶段计算机的主要特征是采用电子管元件作基本器件,用光屏管或汞延时电路作存储器,输入和输出主要采用穿孔卡片或纸带,体积大、耗电量大、速度慢、存储容量小、可靠性差、维护困难且价格昂贵。软件上通常使用机器语言或汇编语言,主要用于科学计算。
2)第二代(1958 - 1964 年):晶体管计算机:晶体管的出现使计算机生产技术得到根本性发展,计算机的基础器件由电子管变为晶体管,用磁芯或磁鼓作存储器,整体性能大幅提高,程序语言也相应出现,如 FORTRAN、COBOL、ALGO160 等高级语言。晶体管计算机开始在数据处理、过程控制方面得到应用。
3)第三代(1965 - 1971 年):中小规模集成电路计算机:随着半导体工艺的发展,中小规模集成电路成为计算机的主要部件,主存储器过渡到半导体存储器,使计算机的体积更小,功耗降低,可靠性提高。软件方面有了标准化的程序设计语言和人机会话式的 BASIC 语言,应用领域进一步扩大。
4)第四代(1971 年 - 至今):大规模和超大规模集成电路计算机:大规模集成电路用于计算机硬件生产,计算机的体积进一步缩小,性能进一步提高。集成更高的大容量半导体存储器作为内存储器,发展了并行技术和多机系统,出现了精简指令集计算机(RISC),软件系统工程化、理论化,程序设计自动化,微型计算机在社会上的应用范围不断扩大。
5)第五代(未来):量子计算机和生物计算机:量子计算机利用量子力学原理,以量子比特进行计算,具有强大并行计算能力。生物计算机以生物分子为载体,如 DNA 和蛋白质等,具有体积小、能耗低、存储量大优势。两者虽前景广阔,但目前仍面临技术难题待突破。
(2)服务器硬件和计算机分类相关
服务器硬件主要包括以下组成部分:
中央处理器(CPU)
CPU:Central Processing Unit,即中央处理器。由控制器和运算器构成,是整个计算机系统中重要的组成部分 ,负责执行程序指令并处理数据。当前CPU的两大架构是CISC(复杂指令集)和RISC(精简指令集),x86是CISC的代表架构,占领了95%以上的桌面计算机和服务器市场。Arm作为RISC的一种,在智能手机、可穿戴设备等移动处理器市场占领主要地位。
按照CPU体系架构来区分,服务器主要分为两类:
x86服务器:采用CISC(复杂指令集)架构服务器,即通常所讲的PC服务器,它是基于PC机体系结构,使用Intel或其它兼容x86指令集的处理器芯片的服务器。目前主要为intel的Xeon E3,E5,E7系列,价格相对便宜、兼容性好、稳定性较差、安全性不算太高。
非x86服务器:采用RISC(精简指令集)或EPIC(并行指令代码) 处理器,主要采用UNIX和其它专用操作系统的服务器,CPU主要有IBM的Power PC、MIPS的MIPS、SUN的Sparc、Compaq的Alpha、HP的PA-RISC、Intel研发的EPIC安腾处理器等。这种服务器价格昂贵,体系封闭,但是稳定性好,性能强,主要用在金融、电信等大型企业的核心系统。
CPU主频:主频是CPU的时钟频率(CPU Clock Speed),是CPU运算时的工作的频率(1秒内发生的同步脉冲数)的简称。单位是Hz。一般说来,主频越高,CPU的速度越快,由于内部结构不同,并非所有的时钟频率相同的CPU的性能都一样。
高速缓存(cache):高速交换的存储器。CPU缓存分为一级,二级,三级缓存,即L1,L2,L3
主板(Mainboard)
主板是计算机系统的基石,集成了各种关键电路元件,包括BIOS芯片、I/O控制芯片、扩展插槽等,为计算机各部件提供连接与通信平台。其设计与质量直接影响到系统的整体性能与稳定性。
内存(RAM)
内存是介于CPU和外部存储之间,是CPU对外部存储中程序与数据进行高速运算时存放程序指令、数据和中间结果的临时场所,它的物理实质就是一组具备数据输入输出和数据存储功能的高速集成电路。内存是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速度快。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。与之相对应的还有外存:硬盘,U盘,软盘,光盘。
硬盘(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等设备。合理的机柜布局与散热设计对于保障服务器稳定运行至关重要。
计算机的分类:
计算机可以按照规模、功能、角色、外形进行划分。
按规模分类
超级计算机(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)Sign In (broadcom.com) 在此链接注册 Broadcom 的账号,账号创建完成后登录;
2)在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;
3)双击安装文件VMware-workstation-full-17.0.0-20800274.exe安装VMware Workstation Pro软件,可自定义安装路径;
4)VMware Workstation Pro安装向导完成后,选择许可证,输入许可证密钥:
vmware workstation 17 pro密钥最新大全_vm17pro密钥许可证-优快云博客 ;点击输入,完成安装。
5)完成安装后重启电脑,确保对VMware-workstation的设置有效。
VMware Workstation Pro 17安装rocky 系统教程
1. 点击左上角 ”文件“,在下拉中选择第一项 “新建虚拟机”;
2. 选择 “自定义(高级)C”,然后点击 “下一步”;
3. "硬件兼容性(H)" 使用默认值,点击 “下一步”;
4. 选择 “稍后安装操作系统(S)”,点击 “下一步”;
5. “客户机操作系统”,选择第二项 “Linux”,版本选择 “CentOS 8 64位”,点击 “下一步”;
6. “虚拟机名称” 填写 “Rocky9.3-1”,“位置” 不用更改,点击 “下一步”;
7. “处理器数量” 下拉,选择 “2”,其它项不变,点击 “下一步“;
8. ”此虚拟机内存(M)“,填写 “2048” MB,点击 “下一步”;
9. “网络类型” 选择第二项 “使用网络地址转换(NAT)(E)”,点击 “下一步”;
10. “SCSI控制器” 选择第二项 “LSI Logic(L) ”,点击 “下一步”;
11. “虚拟磁盘类型” 选择第二项 “SCSI(S)”,点击 “下一步”;
12. “磁盘” 选择第一项 “创建新虚拟磁盘”,点击 “下一步”;13. “最大磁盘大小 (GB)(S): ” 填写 “200”,不要勾选 “立即分配所有磁盘空间(A)”,下方选择 “将虚拟机磁盘存储为单个文件(O)”,点击 “下一步”;
14. “磁盘文件”,文件名用默认 "Rocky9.3-1.vmdk",点击 “下一步”;
15. 点击 “完成”;








VMware Workstation Pro 17安装ubuntu 系统教程
1. 点击左上角 ”文件“,在下拉中选择第一项 “新建虚拟机”;
2. 选择 “自定义(高级)C”,然后点击 “下一步”;
3. "硬件兼容性(H)" 使用默认值,点击 “下一步”;
4. 选择 “稍后安装操作系统(S)”,点击 “下一步”;
5. “客户机操作系统”,选择第二项 “Linux”,Ubuntu 64 位”,点击 “下一步”;
6. “虚拟机名称” 填写 “ubuntu2204-1”,“位置” 不用更改,点击 “下一步”;
7. “处理器数量” 下拉,选择 “2”,其它项不变,点击 “下一步“;
8. ”此虚拟机内存(M)“,填写 “2048” MB,点击 “下一步”;
9. “网络类型” 选择第二项 “使用网络地址转换(NAT)(E)”,点击 “下一步”;
10. “SCSI控制器” 选择第二项 “LSI Logic(L) ”,点击 “下一步”;
11. “虚拟磁盘类型” 选择第二项 “SCSI(S)”,点击 “下一步”;
12. “磁盘” 选择第一项 “创建新虚拟磁盘”,点击 “下一步”;
13. “最大磁盘大小 (GB)(S): ” 填写 “200”,不要勾选 “立即分配所有磁盘空间(A)”,下方选择 “将虚拟机磁盘存储为单个文件(O)”,点击 “下一步”;
14. “磁盘文件”,文件名用默认 "ubuntu2204-1.vmdk",点击 “下一步”;
15. 点击 “完成”;
在左侧菜单栏中,定位到刚新建的虚拟机,点击编辑虚拟器设置 。
选择镜像
启动虚拟机
开始安装
选择英语
继续
选择国内源,加速安装过程

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常用基本命令用法,以及查看帮助文档的方法。
man 命令常见用法:
#man[选项...] [章节] 手册页...
man passwd #默认打开第一章帮助
man 5 passwd #指定第五章帮助
man 9 passwd #总共9个章节,中间的数字不能超过9,如果要找的章节里面没有对应的内容,则会提示没有
man 10 passwd #总共9个章节,中间的数字不能超过9,如果是数字大于9,则直接定位到最小的章
man -a passwd #打开所有帮助
man -f passwd #显示passwd 相关的章节,相当于 whatis passwd
man -k passwd #在man 手册中搜索所有与passwd 相关的内容,使用whatis 数据库
man -w ls #显示ls的man 文件路径
man -aw passwd #显示所有跟passwd有关的man文件路径
man -w 5 passwd #显示第5章的passwd的man文件路径
man -M /usr/local/share/man/zh_CN #显示中文man 的内容
#常用快捷键
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 退出
#常用关键字及格式
[] 可选项
<> 必选项
a|b 二选一
... 同一内容可出现多次
{ } 分组
#段落说明
NAME #名称及说明
DESCRIPTION #详细说明
SYNOPSIS #使用格式
FILES #相关文件
OPTIONS #选项
AUTHOR #作者
REPORTING BUGS #相关bug信息
COPYRIGHT #版权及开源协议信息
EXAMPLES #使用示例
SEE ALSO #可参考其它部份
#其它命令
manpath #显示man手册文件路径
manpath /path/dir #指定man手册文件路径
man -M /path/dir/ COMMAND #在指定位置下搜索,自定义安装的软件,用man查看帮助时,可以指定man文件地址
结合man命令 Linux常见基本命令用法
#man查看命令信息
man ascii#查看ascii编码
man bash#查看全部bash信息
man man#查看man页面分组
#常见文件操作命令
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] #查看日历
#echo命令和双引号、单引号、反向单引号、命令扩展符号
man echo #查看echo命令信息
echo "echo $HOSTNAME" #双引号不能识别命令,可以识别变量,输出echo ubuntu2204
echo 'echo $HOSTNAME' #单引号变量和命令都不识别,输出echo $HOSTNAME
echo `echo $HOSTNAME` #反向单引号变量和命令都识别,输出ubuntu2204
查看帮助文件
查看命令信息
whereis COMMAND #列出命令或系统文件路径,以及其对应的man 手册中的文档路径
whatis COMMAND #使用数据库来显示命令的简短描述,以及对应的man手册的章节
help COMMAND #查看内部命令COMMAND
man bash|help #查看所有内部命令
COMMAND --help|-h || info COMMAND #查看外部命令COMMAND
tldr COMMAND #查看命令COMMAND
查看历史信息
history -c #清空命令历史
history -d offset #删除历史中指定的第offset个命令
history n #显示最近的n条历史
history -a #追加本次会话新执行的命令历史列表至历史文件
history -r #读历史文件附加到历史列表
history -w #保存历史列表到指定的历史文件
history -n #读历史文件中未读过的行到历史列表
history -p #展开历史参数成多行,但不存在历史列表中
history -s #展开历史参数成一行,附加在历史列表后
4. 总结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. 总结常用命令部分的命令使用和演示,最好带有注释信息
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 + N 提示输入指定字符后,重复显示该字符N次
查看命令和使用命令
# 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:]:分别匹配水平空白字符、水平或垂直空白字符、标点符号、可打印字符、控制(非打印)字符、图形字符、十六进制字符。
管道和重定向的总结:
管道:
定义:管道是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 -s 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知识点总结:


通过inode,系统可以获取所有关于文件的信息,而不需要读取文件本身的内容。inode还支持快速的系统调用,如确定文件类型、大小、权限等。
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# 创建指向文件的符号链接(软链接