【学习笔记】Linux

1、 介绍

      1.1、概述

        Linux 是一种开源的类 Unix 操作系统,其内核最初由林纳斯·托瓦兹(Linus Torvalds)在1991年开发。它是现代计算机系统中广泛使用的操作系统之一,涵盖从嵌入式设备到超级计算机的广泛应用场景

安装:linux

      1.2、特点

特点 描述
开源和自由软件 Linux 内核及其大多数应用软件都是开源的,任何人都可以查看、修改和分发源码,其根据GNU通用公共许可证(GPL)发布,用户可以自由使用、修改和再发布
多用户和多任务 支持多个用户同时使用计算机资源,每个用户有自己的权限和文件系统空间,也能够同时运行多个任务,确保系统资源高效利用
安全性和稳定性 严格的权限管理和用户隔离机制,减少了系统受到恶意攻击的风险。广泛用于服务器和关键任务系统,具备高可靠性和长期稳定运行能力
支持多种硬件平台 从嵌入式系统、个人电脑到大型服务器和超级计算机,Linux 都有相应的版本和优化
丰富的应用软件 拥有丰富的软件库,包括桌面应用、开发工具、服务器软件、科学计算软件等
强大的网络功能 Linux 原生支持多种网络协议,广泛用于网络服务器、路由器和防火墙等网络设备中

      1.3、Linux的发行版

        Linux 有许多不同的发行版(Distribution),每个发行版在核心 Linux 内核的基础上,捆绑了不同的应用程序和配置工具,以满足不同用户的需求

常见的发行版 描述
Fedora 前沿技术的试验场,经常引入新技术
CentOS 源自Red Hat Enterprise Linux,适合企业和服务器使用
Debian 稳定性高,适合服务器和开发者
Ubuntu 用户友好,适合桌面用户和新手
Linux Mint 对初学者友好的桌面发行版,基于Ubuntu
Arch Linux 高度可定制,适合高级用户

2、 基础篇 —— 文件系统

      2.1、文件系统

        Linux 文件系统是一种层次化的结构,用于组织和管理计算机上的数据。以下是一些常见的 Linux 文件系统

文件系统 描述
ext4 这是目前最常用的 Linux 文件系统之一,它是 ext 文件系统家族的最新版本。它支持大文件和大容量磁盘,并提供了更好的性能和可靠性
ext3 ext3 是 ext 文件系统家族的前身,与 ext4 相比,它的性能稍逊,但在稳定性和兼容性方面更受信任。它支持日志记录,可以在系统崩溃后更快地恢复
XFS XFS 是一个高性能的文件系统,特别适合用于大型文件和大容量存储。它支持高并发和大型文件系统,适用于高负载的服务器环境
Btrfs Btrfs 是一个具有许多先进特性的先进文件系统,包括快照、压缩、校验和以及数据和元数据的复制。它被设计为面向企业和桌面用户的全功能文件系统
ZFS ZFS 是一种先进的文件系统和逻辑卷管理器,具有强大的数据完整性和管理特性。它支持软件 RAID、数据压缩、快照、复制等功能,但在 Linux 中的集成有时可能需要额外的配置
F2FS F2FS 是一个专为闪存存储设备(如固态硬盘)设计的文件系统,具有优化的性能和寿命管理,适用于移动设备和嵌入式系统

      2.2、目录结构

        Linux 文件系统的目录结构是一种层次化的树状结构,它只有一个根目录 / ,从根目录 / 开始,每个目录可以包含文件和子目录,形成了一个逐级嵌套的结构。并且有虚拟目录的概念,即Linux 中的一些目录是虚拟目录,不实际存储在硬盘上,而是由内核在运行时创建的,用于提供系统信息的访问接口
        对比 Windows 文件系统的目录结构来说,Windows 中可以有多个根目录,它使用了驱动器字母(如 C:\、D:\)来表示不同的存储设备,每个存储设备都有自己的根目录,且这些根目录之间是相互独立的

操作系统 优点 缺点
Linux ① 统一的文件系统结构:Linux 的单一根目录提供了统一的文件系统结构,使得管理和访问文件更加简单直观
② 虚拟目录的灵活性:Linux 的虚拟目录提供了对系统信息的灵活访问,可以方便地获取和管理系统状态
③ 适用于服务器环境:Linux 的文件系统结构适用于服务器环境,能够更好地支持多用户和多任务处理
① 对新用户不友好:Linux 的文件系统结构对于新用户可能比较复杂,需要一定时间来适应和理解
② 软件兼容性:某些应用程序可能针对特定的文件系统结构进行了优化,可能在 Linux 上运行时需要进行额外的配置或兼容性处理
Windows ① 驱动器字母的灵活性:Windows 的驱动器字母提供了对不同存储设备的灵活管理和访问,用户可以轻松地识别和切换不同的存储设备
② 多个根目录的独立性:Windows 的多个根目录使得不同存储设备之间相互独立,可以更好地管理和保护数据
③ 适用于桌面环境:Windows 的文件系统结构适用于桌面环境,能够更好地满足个人用户的需求
① 混乱的文件系统结构:Windows 的多个根目录和特殊目录可能导致文件系统结构比较混乱,使得管理和访问文件不够直观
② 性能问题:Windows 的文件系统结构可能对系统性能产生一定的影响,特别是在处理大量文件时可能会出现性能问题

         通过左上角“位置” → “计算机” 可以看到 Linux 的文件有如下这些,其中图标的右下角带有小箭头的类似于 Windows 的快捷方式
在这里插入图片描述
         将 Linux 的文件结构绘制成层次化树状结构如下

目录 描述
/(根目录) Linux 文件系统的根目录,所有文件和目录都从这里开始
/bin 包含系统启动和运行所需的基本命令(如 cd、ls、cp、mv 等)的可执行文件
/boot 包含引导加载程序和内核映像文件,用于系统启动
/dev 包含系统使用的设备文件,如硬盘、键盘、鼠标等
/etc 包含系统的配置文件,如网络配置、用户账户配置等
/home 包含每个用户的个人文件和目录,每个用户都有一个单独的子目录
/lib 包含系统运行时所需的共享库文件
/media 用于挂载可移动媒体设备(如光盘、USB 驱动器等)的挂载点
/mnt 用于临时挂载其他文件系统的挂载点
/opt 用于存放可选软件包的安装目录
/proc 虚拟文件系统,提供关于当前运行进程和系统内核状态的信息
/root 超级用户(root)的家目录
/run 存储系统运行时数据
/sbin 包含系统管理员使用的系统管理命令
/srv 存储与服务相关的数据
/sys 是一个虚拟文件系统,由 Linux 内核暴露,提供了一个统一的接口来访问内核对象和硬件设备的信息
/tmp 用于存放临时文件的目录,系统重启时会清空其中的内容
/usr 包含用户安装的应用程序、库文件等
/var 包含经常变化的文件,如日志文件、临时文件等

虚拟文件系统(Virtual File System,VFS):是操作系统内核中的一个抽象层,提供了统一的接口,使得不同类型的文件系统能够被操作系统以相同的方式访问和管理。VFS 使得内核可以处理多种文件系统,而不需要为每种文件系统编写单独的代码

3、 基础篇 —— VI/VIM 编辑器

      3.1、概述

         vi 和 vim 是 Unix 和 Linux 系统中广泛使用的文本编辑器
         vi(Visual Interface)是最早的文本编辑器之一,几乎在所有 Unix 系统上都可以找到。它是轻量级的,并且不依赖图形界面,因此在许多系统管理任务中非常有用。而 vim 是 vi 编辑器的增强版,提供了许多额外功能,如语法高亮、代码折叠、插件支持等

vim的特性 描述
语法高亮 根据文件类型自动高亮显示语法,提升代码阅读和编写的效率
多级撤销 支持多次撤销和重做操作,允许用户轻松回滚和恢复编辑
插件系统 支持通过插件扩展功能,可以自定义和增强编辑器
高级编辑功能 包括自动补全、宏录制与播放、文本对象操作等

         为了接下来的代码演示,先将 /etc/profile 拷贝到 /root 目录下

拷贝:cp 被拷贝的文件 存放位置

         首先感受一下使用两种编辑器查看文件时,在“语法高亮”上的不同

# 复制
cp /etc/profile /root
# 使用 vim 查看这个文件,发现有颜色
cd /root
vim profile
:q
# 使用 vi 查看这个文件,发现没有颜色
vi profile
:q

      3.2、编辑器模式及常用命令

         编辑器有三种主要模式

模式 命令 描述
一般模式 进入:vim xxx 在此模式下,主要用于查看文本以及复制、粘贴、删除文本等操作

编辑模式 开始编辑:i或者a或者o
退出编辑:ESC键
在此模式下,主要用于编辑文本
命令模式 在底部输入命令:: xxx或者/ xxx
返回:ESC键
在此模式下,主要用于保存文件、退出编辑器等

在这里插入图片描述

一般模式的常用命令 描述
u 撤回一步
p 粘贴(粘贴行:在光标所在行的下方进行粘贴;粘贴多个字符:在光标右边进行粘贴)
yy 复制一行
数字yy / y数字y 复制多行
y^(y+shift+6) 复制从行头到光标前一个字母
y$(y+shift+4) 复制从光标处到行尾
yw 复制一个单词及后方的空格(光标需要放在首字母,否则会被截断)
y数字w 复制多个单词及后方的空格(光标需要放在第一个单词的首字符,否则第一个单词会被截断)
dd 删除一行
数字dd / d数字d 删除多行
d^(y+shift+6) 删除从行头到光标前一个字母
d$(y+shift+4) 删除从光标处到行尾
dw 删除一个单词及后方的空格(光标需要放在首字母)
d数字w 删除多个单词及后方的空格(光标需要放在第一个单词的首字母)
x 剪切一个字符(当前的光标)
X(shift+x) 剪切一个字符(当前光标的前一个)
r字符 将光标所在的字符进行更改
R(shift+r) 类似于进入编辑模式,可以替换多个字符,”替换“跟”插入“的体验不一样
^(shift+6) 移动到行头
$(shift+4) 移动到行尾
b 移到当前单词的开头
e 移到当前单词的结尾
w 移到下一个单词的开头
数字G 移动到某一行的行头
G 移到文件最后一行的行头
L 移动到当前窗口最后一行的行头
编辑模式的常用命令 描述
i 光标不动地进入编辑模式
I(shift+i) 光标移到当前行的行头,然后进入编辑模式
a 光标右移一位地进入编辑模式
A(shift+a) 光标移到当前行的行尾,然后进入编辑模式
o 光标下移一行地进入编辑模式
O(shift+o) 光标上移一行地进入编辑模式
s 删除光标所在的字符,并移动到被删除字符的右一个字符处,然后进入编辑模式
S(shift+s) 删除光标所在的行,并移动到被删除行的行头,然后进入编辑模式
命令模式的常用命令 描述
:q 退出 vi/vim 编辑器
:q! 强制退出编辑器且不保存
:w 保存
:wq 保存并退出 vi/vim 编辑器
:set nu 显示行号
:set nonu 不显示行号
/查找的内容 查找(搭配:n查找下一处,N查找上一处,:noh不要高亮显示)
:s/查找的内容/替换的内容 替换掉光标所在行的第一个匹配的内容
s/查找的内容/替换的内容/g 替换掉光标所在行的全部匹配的内容
%s/查找的内容/替换的内容 替换掉每一行的第一个匹配的内容
%s/查找的内容/替换的内容/g 全文替换

4、 基础篇 —— 网络配置

      4.1、VMware NetWork

         打开主机的高级网络设置查看主机有哪些网络适配器,可以看到有一个 VMware Network Adapter VMnet1 和一个 VMware Network Adapter VMnet8,这是在安装 VMware Workstation 或 VMware Player 之类的虚拟化软件时,VMware 自动为主机配置的虚拟网络适配器(又称虚拟网卡),以便支持虚拟机的网络连接,不同的 VMNet 处于不同的虚拟网络中

TIP:在典型的计算机系统中,网络接口卡(NIC,Network Interface Card)可以分为物理网卡和虚拟网卡。物理网卡包括有线以太网网卡和无线网卡(WLAN),而虚拟网卡通常是由虚拟化软件(如 VMware)创建的,用于虚拟机与宿主机及其他虚拟机之间的网络通信

网卡的功能主要有:
1、对于发送数据来说:数据封装和解封装、数据传输
2、对于接收数据来说:地址解析和控制、数据接收
3、通用:提供物理层接口、流量控制、中断处理、网络协议支持

         VMware 提供了几种不同类型的虚拟网络,主要包括 VMnet0、VMnet1 和 VMnet8,每个适配器处于不同网络模式的虚拟网络中

适配器类型 对应的网络模式
VMnet0 桥接网络
VMnet1
仅主机网络
VMnet8
NAT网络

      4.2、链接测试

        由于我在创建虚拟机过程中进行网络配置时选择了 NAT 模式,因此现在我应该看我的 VMnet8 网卡地址:192.168.137.1。然后再找到虚拟机的网卡地址:192.168.137.128

使用命令行的查看方式
查看虚拟机的地址(Linux):ifconfig(看ens那一栏的)
查看主机的地址(Windows):ipconfig

        然后就可以使用ping来测试是否连接的通了

TIP:谁被 ping 不通可以找谁的防火墙,例如虚拟机 ping 主机 ping 不通,那应该是主机的防火墙拦截了 ICMP 报文的请求(ping 使用的就是 ICMP 协议),由于 VMnet8 虚拟网络适配器通常被 Windows 识别为公共网络连接(因为这些虚拟网络通常是默认配置,并没有明确标识为家庭(专用)或公司网络(域)),因此将 Windows 的公用配置文件的入站连接改为允许即可
在这里插入图片描述

      4.3、网络连接模式

网络模式 作用 用途 典型应用
桥接网络 将虚拟机直接连接到物理网络,使其像物理网络上的独立设备一样存在(主机起到网桥的作用) 使虚拟机获得与宿主机相同的网络访问权限,可以直接访问网络中的其他设备 虚拟机需要与网络中的其他设备(如服务器、打印机等)进行正常通信
仅主机网络 创建一个仅宿主机和虚拟机之间的网络,没有外部网络访问权限 用于虚拟机和宿主机之间的隔离网络通信,不与外部网络进行交互 创建一个独立的测试环境,不受外部网络影响
NAT网络 通过 NAT 方式让虚拟机使用宿主机的网络连接与外部网络通信 使虚拟机能够通过宿主机访问外部网络,同时保持内部网络隔离 需要虚拟机访问互联网或外部网络资源,但希望内部网络通信隔离

         Ⅰ. VMware 实现桥接模式的细节如下,首先了解两个概念:
         ① 虚拟交换机:在VMware中,每个虚拟网络(如VMnet0、VMnet1等)实际上是由一个虚拟交换机构成的。这个虚拟交换机用于连接虚拟机和物理网络

虚拟交换机的工作机制 描述
初始化连接 虚拟交换机与主机的物理网卡建立连接
MAC地址表 虚拟交换机会维护一个MAC地址表,这个表记录了各个虚拟机的MAC地址和对应的端口(虚拟网卡)
数据包转发 当虚拟机发送数据包时,虚拟交换机会检查目的MAC地址,根据MAC地址表决定将数据包转发到哪个端口。如果目的MAC地址在表中,虚拟交换机会将数据包转发到对应的虚拟网卡。如果目的MAC地址不在表中,虚拟交换机会进行泛洪,将数据包发送到所有端口

         ② 虚拟网卡和物理网卡:每台虚拟机都有一个虚拟网卡(vNIC),这个虚拟网卡通过虚拟交换机与主机的物理网卡(pNIC)相连。在桥接模式下,虚拟交换机与物理网卡直接关联,允许虚拟机通过主机的物理网络接口直接访问网络

流程细节 描述
虚拟网卡创建与配置 当用户创建一台虚拟机时,VMware会为该虚拟机分配一个或多个虚拟网卡(vNIC),每个虚拟网卡都会被分配一个唯一的MAC地址,用于网络层的数据通信,在选择桥接模式后,虚拟网卡就准备好通过虚拟交换机与物理网卡进行通信
虚拟交换机 VMware会在主机上创建一个虚拟交换机(vSwitch)。这个虚拟交换机是一个软件实现的交换机,工作在数据链路层,用于在虚拟机之间以及虚拟机与物理网络之间转发以太网帧,每个虚拟网卡被分配一个虚拟端口(vPort)连接到虚拟交换机,而虚拟交换机会绑定主机的物理网卡(pNIC)
虚拟机发包 虚拟机A生成一个数据包,并通过其虚拟网卡(vNIC)发送该数据包
虚拟交换机接收 数据包通过vNIC的虚拟端口进入虚拟交换机(vSwitch)
转发到物理网卡 虚拟交换机根据MAC地址表决定转发路径,如果数据包的目的地址在外部网络,虚拟交换机会将数据包转发到在主机物理网卡上虚拟出来的网桥上(网桥就会将数据发到外部网络中,相当于将显卡当成了一个网桥/交换机媒介)
物理网络中的转发 虚拟网桥将数据包发送到外部网络,由物理网络设备(如交换机、路由器)进行处理
接收方处理 数据包到达目的设备(如另一台物理机或虚拟机),目的设备处理并响应

TIP:Promiscuous Mode:在一些配置下,物理网卡可能会进入混杂模式(promiscuous mode),这样它可以接收所有通过该网卡的数据包,而不仅仅是发给它的那些。这对于虚拟机监控网络流量(如使用Wireshark进行抓包)非常有用

         Ⅱ. VMware 实现 NAT 模式的细节如下,首先了解一个概念:
         ① 虚拟路由器:VMware 在 NAT 模式下创建了一台虚拟路由器。这个“虚拟路由器”负责在虚拟机和主机之间进行网络通信和地址转换

虚拟路由器的组成 描述
虚拟NAT设备 负责地址转换(NAT),将虚拟机的私有IP地址转换为主机的公共IP地址。它类似于物理网络中的家庭路由器的NAT功能
虚拟DHCP服务器 为连接到NAT网络的虚拟机动态分配IP地址、子网掩码、网关和DNS服务器地址
虚拟网络适配器 连接虚拟机到主机的虚拟网络接口,确保虚拟机能够通过虚拟NAT设备访问外部网络
流程细节 描述
虚拟机启动和IP地址分配 虚拟机通过虚拟网络适配器连接到VMnet8,并向虚拟DHCP服务器请求IP地址。虚拟DHCP服务器分配一个私有IP地址(例如192.168.137.x)给虚拟机(此时对应的虚拟网网关应该是192.168.137.2,而分配给主机虚拟网卡的 ip 应该是192.168.137.1)
数据包的流动 当虚拟机需要访问外部网络时,数据包会通过VMnet8发送到虚拟NAT设备。虚拟NAT设备将虚拟机的私有IP地址转换为主机的公共IP地址,并通过主机的物理网络接口将数据包发送到外部网络
响应数据包的返回 外部服务器的响应数据包通过主机的公共IP地址返回到主机,虚拟NAT设备根据之前记录的连接信息,将响应数据包的目标地址转换回虚拟机的私有IP地址,然后通过VMnet8将数据包发送回虚拟机

TIP:由于虚拟路由器使用了 NAT 转换,因此主机本来是没办法反向访问虚拟机的,然而 VMware 会为主机配置一个虚拟网卡(现在是双网卡),这样就使得主机也能直接跟虚拟交互了

      4.4、修改虚拟机的 IP 为静态

         下面演示在 NAT 模式下将 IP 修改为静态的方法

进入配置文件:vim /etc/sysconfig/network-scripts/ifcfg-ens33

# 配置如下

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
# BOOTPROTO="dhcp" # 旧的 BOOTPROTO 为自动DHCP
BOOTPROTO="static" # 更换 BOOTPROTO 改为静态配置
DEFROUTE="yes"
......
  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值