【书生大模型实战营】Linux 基础知识-L0G1000

前言:书生大模型实战营是上海人工智能实验室开展的大模型系列实践活动,提供免费算力平台,学员通过闯关式任务,可获得免费算力和存储,助力项目实践。本期是第4期,时间从十一月份开始,持续到十二月底,本期我作为学习者,同时也是9班的助教,将此次实战营相关任务教程文档整理成笔记,记录自己在实践过程中的心得与收获,以及相关知识点讲解。

官方教程可参考:Tutorial/docs/L0/linux/readme.md at camp4 · InternLM/Tutorial

1.关卡任务介绍:

本关是入门岛的第一关,主题是Linux基础知识,闯关任务要求如下:

2.SSH和端口映射介绍

InternStudio 是本次实战营官方提供的云端算力平台,教程教程里面有详细的介绍,在此略去。

2.1 .SSH和远程连接

SSH(Secure Shell)是一种加密的安全协议,用于在不安全的网络上安全地进行远程登录、文件传输和命令执行。SSH 提供了端到端的加密通信,确保数据在传输过程中不会被窃听或篡改。它广泛应用于系统管理员、开发人员和其他需要远程管理服务器或开发环境的用户。

SSH 的主要特点:

  • 加密通信:SSH 使用对称加密、非对称加密和哈希算法来保护数据的安全性。

  • 身份验证:支持多种身份验证方式,如密码、公钥/私钥对、双因素认证等。

  • 隧道功能:可以通过 SSH 隧道转发其他协议的流量,实现安全的远程访问。

  • 命令执行:可以在远程服务器上执行命令,类似于本地终端操作。

远程连接允许用户通过网络从一台计算机连接到另一台计算机,从而实现远程管理和操作。远程连接通常使用加密协议(如 SSH),确保通信的安全性,防止敏感信息泄露。

2.2.如何使用 SSH 远程连接开发机

首先我们创建一个开发机,这里我已经在InternStudio平台创建好了一个名为C41的开发机,然后我们点击开发机操作界面的“SSH连接”,就会出现一个小窗口,如下:
然后我们"windows+R"打开本地的命令行,输入复制的登陆命令即可,提示需要输入密码,然后复制密码并输入按Enter即可。注意:命令行输入的密码不会显示出来。

因为我之前已经配置过SSH密钥,所以不用输入密码,就可以直接连上开发机,开发机界面如下:

我们可以使用nvidia-smi查看GPU的信息,如下:

我们可以输入两次exit命令来退出SSH连接。

配置SSH密钥连接:

每次登录都要输入密码很麻烦,我们可以配置SSH密钥连接,这样就不需要每次登录都输入密码啦。是不是方便很多呢?

我们可以使用RSA算法来生成密钥,命令为:ssh-keygen -t rsa,一路enter即可,轻松愉快。

ssh-keygen -t rsa

生成密钥后,我们看到密钥保存在C:\Users\{your_username}/.ssh/id_rsa.pub

我们使用在powerShell中可以使用Get-Content命令查看生成的密钥。

 接着回到开发机,我们点开添加公钥。输入刚刚复制的公钥值即可,名称会自动生成。

这样我们下次再登录就不用输入密码啦,撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

2.3.使用VSCode远程连接开发机

接下来我们演示一下,如何使用VSCode远程连接开发机。

VSCode是由微软开发的一款免费、开源的代码编辑器,适用于多种编程语言和开发任务。VSCode 以其轻量级、高度可扩展性和丰富的功能而广受欢迎。使用VSCode远程连接到开发机是一种非常方便的方式来管理和编辑远程服务器上的文件。

操作流程:

首先在扩展插件里面输入ssh,搜索找到Remote-SSH插件并安装。

安装完成后,点击侧边栏的远程连接图标,在SSH中点击“+”按钮,添加开发机SSH连接的登录命令。因为前面已经配置过密钥,所以这次不需要再次输入密码了。

我们将登录命令复制下来,然后将命令粘贴到弹出的窗口中,最后回车。然后在右下角弹出来的提示窗口中点击“连接”就可以远程到开发机中了。

安装完成后,点击侧边栏的远程连接图标,在SSH中点击“+”按钮,添加开发机SSH连接的登录命令。因为前面已经配置过密钥,所以这次不需要再次输入密码了。

我们将登录命令复制下来,然后将命令粘贴到弹出的窗口中,最后回车。然后在右下角弹出来的提示窗口中点击“连接”就可以远程到开发机中了。

 连接完成后如下:

2.4.端口映射

端口映射 是一种网络技术,用于将一个设备上的端口(通常是主机)映射到另一个设备上的端口(通常是容器、虚拟机或远程服务器)。通过端口映射,你可以将外部流量转发到内部服务,或者将内部服务暴露给外部网络。

端口映射操作:接下来我们进行端口映射操作,在开发机页面,点开自定义服务,复制图中命令,然后本地PC输入指令:

ssh -p 41837 root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no

端口映射命令解析:

  • ssh:启动 SSH 客户端,用于建立与远程服务器的安全连接。

  • -p 41837:指定 SSH 连接的端口号。每个人的开发机有不同的暴露端口,这里使用的是 41837。

  • root@ssh.intern-ai.org.cn:指定要连接的远程服务器的用户名(root)和主机名(ssh.intern-ai.org.cn)。

  • -C:启用压缩,减少传输数据量,特别适用于带宽较低或延迟较高的网络环境。

  • -N:不执行远程命令,只建立隧道。这意味着 SSH 连接不会启动任何远程 shell 或命令,仅用于端口转发。

  • -g:允许远程主机连接到本地转发的端口。默认情况下,只有本地机器可以连接到转发的端口,使用 -g 选项后,其他远程主机也可以连接。

  • -L 7860:127.0.0.1:7860:这是关键的端口映射部分:

    • 7860:本地机器上监听的端口号。任何发送到本地 7860 端口的流量都会被转发。

    • 127.0.0.1:7860:远程服务器上的目标地址和端口号。这里的 127.0.0.1 表示远程服务器本身,7860 是远程服务器上运行的 Web 服务的端口。

  • -o StrictHostKeyChecking=no:禁用严格的主机密钥检查。这会自动接受新的主机密钥,避免手动确认,特别适合自动化脚本或频繁连接的场景。

我们举一个WebDemo的例子,我们在开发机创建一个helloworld.py文件。

输入以下内容:
这里我们用到了socket库和gradio库,如果没有安装,需要先行安装一下。

import socket
import re
import gradio as gr# 获取主机名
def get_hostname():hostname = socket.gethostname()match = re.search(r'-(\d+)$', hostname)name = match.group(1)return name# 创建 Gradio 界面
with gr.Blocks(gr.themes.Soft()) as demo:html_code = f"""<p align="center"><a href="https://intern-ai.org.cn/home"><img src="https://intern-ai.org.cn/assets/headerLogo-4ea34f23.svg" alt="Logo" width="20%" style="border-radius: 5px;"></a></p><h1 style="text-align: center;">☁️ Welcome {get_hostname()} user, welcome to the ShuSheng LLM Practical Camp Course!</h1><h2 style="text-align: center;">😀 Let’s go on a journey through ShuSheng Island together.</h2><p align="center"><a href="https://github.com/InternLM/Tutorial/blob/camp3"><img src="https://oss.lingkongstudy.com.cn/blog/202410081252022.png" alt="Logo" width="50%" style="border-radius: 5px;"></a></p>"""gr.Markdown(html_code)demo.launch()

我们在开发机运行这个文件:

我们点击这个URL:http://127.0.0.0:7860。

在没有做端口映射的情况下是没法打开的。如下图:

然后我们做一下端口映射,再次打开就可以正确显示页面了,是不是很神奇。

使用VSCode进行端口映射

前面我们已经SSH远程连接了开发机,VScode提供了自动端口映射的功能,我们不需要手动配置,我们可以使用“Ctrl+Shift+~”快捷键唤醒终端,在终端的右侧可以找到端口选项:

3.Linux基础命令

Linux 是一个开源的、基于 Unix 的操作系统内核,广泛用于服务器、嵌入式系统和个人计算机。它以其稳定性、安全性和灵活性著称,支持多种硬件平台和丰富的软件生态系统。

3.1.文件管理

在 Linux 中,常见的文件管理操作包括:

  • 创建文件:可以使用 touch 命令创建空文件。

  • 创建目录:使用 mkdir 命令。

  • 目录切换:使用cd命令。

  • 显示所在目录:使用pwd命令。

  • 查看文件内容:如使用 cat 直接显示文件全部内容,more 和 less 可以分页查看。

  • 复制文件:用 cp 命令。

  • 创建文件链接:用ln命令。

  • 移动文件:通过 mv 命令。

  • 删除文件:使用 rm 命令。

  • 删除目录rmdir(只能删除空目录)或 rm -r(可删除非空目录)。

  • 查找文件:可以用 find 命令。

  • 查看文件或目录的详细信息:使用ls命令,如使用 ls -l查看目录下文件的详细信息。

在这里我们主要介绍几种课程中会用到的常用命令,更多的Linux命令,感兴趣的同学可自行研究。

列出目录内容:ls

ls 是用于列出目录内容的命令。它可以帮助你查看当前或指定目录中的文件和子目录。

  • ls:列出当前目录的内容。

  • ls -l:以长格式列出文件的详细信息(包括权限、所有者、大小、修改时间等)。

  • ls -a:列出所有文件,包括隐藏文件(以 . 开头的文件)。

  • ls -la 或 ls -al:结合 -l 和 -a,列出所有文件的详细信息,包括隐藏文件。

  • ls -h:以人类可读的格式显示文件大小(如 KB、MB)。

  • ls -R:递归列出目录及其子目录的内容。

改变当前目录:cd

cd(Change Directory)用于切换当前工作目录。

  • cd /path/to/directory:进入指定的目录。

  • cd ..:返回上一级目录。

  • cd ~ 或 cd:返回用户的主目录。

  • cd -:返回上一次所在的目录。

显示当前工作目录:pwd

pwd(Print Working Directory)用于显示当前所在目录的完整路径。

创建新目录:mkdir

mkdir 用于创建新的目录。

  • mkdir directory_name:创建一个名为 directory_name 的新目录。

  • mkdir -p path/to/directory:递归创建多个层级的目录(如果父目录不存在,会自动创建)。

删除文件或目录:rm

rm 用于删除文件或目录。使用时要小心,删除的操作是不可逆的。

  • rm file_name:删除单个文件。

  • rm -r directory_name:递归删除目录及其所有内容。

  • rm -rf directory_name:强制递归删除目录及其所有内容,不提示确认(危险操作,谨慎使用)。

复制文件或目录:cp

cp 用于复制文件或目录。

  • cp source destination:将 source 文件复制到 destination

  • cp -r source_directory destination_directory:递归复制整个目录及其内容。

  • cp -i source destination:在覆盖文件时提示确认(避免误操作)

创建文件链接:ln(重要)

ln 命令用于创建文件或目录的链接(也称为符号链接或硬链接)。

硬链接是指向同一 inode(索引节点)的多个文件名。每个硬链接都是文件的实际副本,但它们共享相同的文件数据。删除一个硬链接不会影响其他硬链接,只有当所有硬链接都被删除时,文件数据才会被真正删除。

符号链接(软链接)是一个特殊的文件,它包含指向另一个文件或目录的路径。符号链接与硬链接不同,它并不直接指向文件的数据,而是通过路径来引用目标文件。如果目标文件被删除,符号链接将变成“悬空链接”(即无效链接)。

移动文件或目录:mv

mv 用于移动文件或目录,也可以用于重命名文件或目录。

  • mv old_name new_name:重命名文件或目录。

  • mv file_or_directory destination:将文件或目录移动到目标位置。

创建空文件:touch(重要)

touch 用于创建空文件,或者更新现有文件的时间戳。

  • touch file_name:创建一个名为 file_name 的空文件。

  • touch -t YYYYMMDDHHMM.SS file_name:设置文件的时间戳为指定的时间。

查看文件内容:cat,less,head,tail
  • cat file_name:显示文件的全部内容。

  • less file_name:分页查看文件内容,适合查看大文件。

  • head -n N file_name:显示文件的前 N 行。

  • tail -n N file_name:显示文件的最后 N 行。

查找文件:findlocate
  • find /path/to/search -name "filename":在指定路径下查找名为 filename 的文件。

  • find . -type f -name "*.txt":查找当前目录下的所有 .txt 文件。

  • locate filename:快速查找文件(需要预先建立数据库,使用 updatedb 更新)。

压缩与解压缩文件:targzipzipunzip

  • tar -cvf archive.tar /path/to/directory:创建 tar 归档。

  • tar -xvf archive.tar:解压 tar 归档。

  • tar -czvf archive.tar.gz /path/to/directory:创建 gzip 压缩的 tar 归档。

  • tar -xzvf archive.tar.gz:解压 gzip 压缩的 tar 归档。

  • gzip file_name:压缩文件并删除原文件。

  • gunzip file_name.gz:解压文件。

  • zip -r archive.zip /path/to/directory:创建 zip 归档。

  • unzip archive.zip:解压 zip 归档。

查看文件类型:file

file 用于查看文件的类型,而不仅仅是根据文件扩展名。

3.2.进程管理

进程管理命令是进行系统监控和进程管理时的重要工具,常用的进程管理命令有以下几种:

  • ps:查看正在运行的进程

  • top:动态显示正在运行的进程

  • pstree:树状查看正在运行的进程

  • pgrep:用于查找进程

  • nice:更改进程的优先级

  • jobs:显示进程的相关信息

  • bg 和 fg:将进程调入后台

  • kill:杀死进程

ps - 显示当前进程状态

ps 命令用于显示当前系统中运行的进程信息。它可以显示不同用户、不同终端或整个系统的进程。

top - 实时显示系统资源和进程状态

top 是一个交互式的命令行工具,实时显示系统的 CPU、内存使用情况以及当前运行的进程。它可以帮助你监控系统性能并识别占用资源较多的进程。

kill - 终止进程(重要)

kill 命令用于向进程发送信号,默认情况下发送的是 SIGTERM 信号,请求进程正常终止。如果进程不响应 SIGTERM,可以使用 -9 选项发送 SIGKILL 信号强制终止进程。

  • kill PID:向指定的进程 ID 发送 SIGTERM 信号。

  • kill -9 PID:向指定的进程 ID 发送 SIGKILL 信号,强制终止进程。

  • killall process_name:终止所有名为 process_name 的进程。

nvidia-smi(重要)

在开发机中还有一条特殊的命令nvidia-smi,它是 NVIDIA 系统管理接口(NVIDIA System Management Interface)的命令行工具,用于监控和管理 NVIDIA GPU 设备。它提供了一种快速查看 GPU 状态、使用情况、温度、内存使用情况、电源使用情况以及运行在 GPU 上的进程等信息的方法。

4.Conda和Shell介绍(简要介绍)

4.1.conda

Conda 是一个开源的包管理环境管理系统,可在 Windows、macOS 和 Linux 上运行。它快速安装、运行和更新软件包及其依赖项。使用 Conda,您可以轻松在本地计算机上创建、保存、加载和切换不同的环境。

常见conda命令:

创建一个新的 Conda 环境,并指定 Python 版本(可选):

conda create --name myenv python=3.9

激活一个 Conda 环境:

conda activate myenv

退出当前激活的环境:

conda deactivate

查看系统中所有的 Conda 环境:

conda env list # 或 conda info --envs

删除指定的 Conda 环境:

conda env remove --name myenv

在当前激活的环境中安装包:

conda install package_name

从特定渠道安装包:

conda install -c conda-forge package_name

更新指定的包到最新版本:

conda update package_name

卸载指定的包:

conda remove package_name

搜索可用的包:

conda search package_name

4.2.shell

Shell 是操作系统的命令行解释器,它提供了一个用户与操作系统交互的界面。通过 Shell,用户可以输入命令来执行各种任务,如文件管理、进程控制、脚本编写等。

Shell 的主要功能:

  • 命令执行:用户可以通过 Shell 输入命令来执行各种操作,如启动程序、管理文件、查看系统信息等。
  • 脚本编写:Shell 支持编写脚本(shell scripts),将多个命令组合成一个可执行的文件,实现自动化任务。
  • 环境变量管理:Shell 允许用户设置和管理环境变量,这些变量可以影响程序的行为和配置。
  • 管道和重定向:Shell 支持将一个命令的输出作为另一个命令的输入(管道),或者将输出重定向到文件中。
  • 作业控制:Shell 提供了进程管理功能,用户可以启动、暂停、恢复和终止进程。

4.3.总结

  • Conda 是一个强大的包管理和环境管理工具,特别适合处理复杂的依赖关系和多语言项目。它可以帮助你轻松创建和管理独立的虚拟环境,确保项目的依赖项不会相互冲突。

  • Shell 是操作系统的命令行解释器,提供了与操作系统交互的界面。通过 Shell,你可以执行各种命令、编写脚本、管理文件和进程。常见的 Shell 有 Bash、Zsh、Fish 等,每种 Shell 都有其独特的特性和优势。

5.后记

本章任务就到这里结束了,看完感觉完全不够的小伙伴可以自行查找更多的学习内容,研究端口映射和Linux基础命令更高阶的知识,生命不息,学习不止。

那么,最后,动动你的小手,点赞收藏关注吧,在此拜谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/63233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软件安全】软件安全设计规范,软件系统安全设计制度(Word原件)

1.1安全建设原则 1.2 安全管理体系 1.3 安全管理规范 1.4 数据安全保障措施 1.4.1 数据库安全保障 1.4.2 操作系统安全保障 1.4.3 病毒防治 1.5安全保障措施 1.5.1实名认证保障 1.5.2 接口安全保障 1.5.3 加密传输保障 1.5.4终端安全保障 软件全面文档清单涵盖以下核心内容&a…

你是如何找bug的?bug分析的正确打开方式

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Bug严重级别(Severity&#xff0c;Bug级别)&#xff1a;是指因缺陷引起的故障对软件产品的影响程度&#xff0c;由测试人员指定。 A-Crash&#xff1a;造成系统或…

WGCNA分析流程及内容解读

文章标题&#xff1a;通过 WGCNA 和机器学习识别和验证与免疫和氧化应激相关的糖尿病肾病诊 发表年限&#xff1a;2023年 期刊&#xff1a;Frontiers in Immunology 影响因子&#xff1a;5.7 研究背景&#xff1a; 糖尿病肾病&#xff08;DN&#xff09;以蛋白尿、高血压和…

【MySQL 进阶之路】锁详解

MySQL 锁详解 1. 锁的基本概念 锁在数据库中是用来保证数据一致性和防止并发冲突的一种机制。MySQL 中的锁可以分为不同的类型和粒度&#xff0c;每种锁都有特定的使用场景和特点。了解锁的类型、作用以及如何避免锁带来的问题是提升数据库性能和避免数据冲突的关键。 2. 锁…

qsort函数用法,以及模拟实现

函数定义 基于快速排列的一个函数&#xff0c;它的四个参数的含义&#xff1a; 1、void* base&#xff0c;是排序开始的地址 2、size_t num 想要排列的个数 3、size_t size 排列对象&#xff0c;一个占多少空间&#xff08;字节&#xff09; 4、int (*comper)(void*,voi…

CentOS7虚拟机 网络适配器 NAT模式和桥接模式区别

一、环境介绍 宿主机&#xff1a;Windows电脑 虚拟机&#xff1a;VMware下的CentOS7 局域网&#xff1a;路由器下的各真实主机组成的网络 内部局域网&#xff1a;宿主机构建的一个内部网路 二、NAT和桥接网络链接模式区别 NAT模式&#xff1a;相当于宿主机构建一个内部局域网&a…

全面解析DApp开发中的智能合约设计

在DApp的开发过程中&#xff0c;智能合约的设计起到了至关重要的作用。智能合约是运行在区块链上的程序&#xff0c;负责处理和执行DApp中的逻辑、交易和数据存储。下面我们将深入探讨智能合约的设计原则、挑战和优化方法&#xff0c;帮助开发者掌握如何设计高效、安全的智能合…

锐捷Web认证

文章目录 Web认证二代 Web 认证配置 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Datacom专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月6日11点40分 Web认证 Portal 认证、Web认证 Web认证的介绍 Web 认证使用浏览器进行身份验…

KernelShark在ubuntu24.04.01的编译

KernelShark在ubuntu24.04.01的编译 写在前面具体过程装ubuntu24.04.01安装depends下载代码如何编译cmake 输出make 输出 如何安装 初步启动Add the User to the perf Group 简单的使用trace-cmd抓包 来看我的文章&#xff0c;必有所得。 平凡中&#xff0c;总有我帮您踩过的坑…

解决Unity编辑器Inspector视图中文注释乱码

1.问题介绍 新创建一个脚本&#xff0c;用VS打开编辑&#xff0c;增加一行中文注释保存&#xff0c;在Unity中找到该脚本并选中&#xff0c;Inspector视图中预览的显示内容&#xff0c;该中文注释显示为乱码&#xff0c;如下图所示&#xff1a; 2.图示解决步骤 按上述步骤操作…

【AIGC半月报】AIGC大模型启元:2024.12(上)

【AIGC半月报】AIGC大模型启元&#xff1a;2024.12&#xff08;上&#xff09; &#xff08;1&#xff09;OpenAI-12日发布会&#xff08;持续更新中........&#xff09;Day01-12.06&#xff1a;o1满血版上线&#xff08;已发布&#xff09;Day02-12.07&#xff1a;强化微调&a…

字节码

字节码 1、字节码文件概述 1.1、字节码文件是跨平台的吗&#xff1f; ​ Java 虚拟机不和包括 Java 在内的任何语言绑定&#xff0c;它只与“Class 文件”这种特定的二进制文件格式所关联。 ​ 无论使用何种语言进行软件开发&#xff0c;只要能将源文件编译为正确的Class文件…

排查bug的通用思路

⭐️前言⭐️ APP点击某个按钮没有反应/PC端执行某个操作后&#xff0c;响应较慢&#xff0c;通用的问题排查方法: 从多个角度来排查问题 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评…

AI 建站:Durable

网址&#xff1a;https://app.durable.co 步骤 1) 登录 2&#xff09;点击创建新业务 3&#xff09;填写信息后&#xff0c;点击创建 4&#xff09;进入业务 5&#xff09;生成网站 6&#xff09;生成完成后不满意的话可以自己调整 7&#xff09;点击保存 8&#xff09;发布 …

部署kafka并通过python操作

目录 一、安装JDK1.81、检查服务器是否已安装JDK2、若已安装JDK&#xff0c;进行卸载3、更新yum源4、搜索JDK1.8安装包5、安装JDK1.86、查看是否安装成功7、配置环境变量 二、安装Kafka1、下载并解压kafka部署包至/usr/local/目录2、修改server.properties3、修改/etc/profile4…

【Linux】 进程池 一主多从 管道通信

目录 1.代码介绍 2.channel 类 3.进程池类编写 4.主函数及其他 5. 源码 1.代码介绍 本文代码采用一主多从式&#xff08;一个主进程&#xff08;master&#xff09;多个子进程&#xff08;worker&#xff09;&#xff09;通过管道进行通信&#xff0c;实现主进程分发任务&…

Ubuntu环境安装RabbitMQ

1.安装Erlang RabbitMq需要Erlang语⾔的⽀持&#xff0c;在安装rabbitMq之前需要安装erlang # 更新软件包 sudo apt-get update # 安装 erlang sudo apt-get install erlang 查看erlang版本 : erl 退出命令:halt(). 2. 安装RabbitMQ # 更新软件包 sudo apt-get update # 安装 …

力扣--199.二叉树的右视图

题目 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 提示: 二叉树的节点个数的范围是 [0,100] -100 < Node.val < 100 代码 class Solution { public List rightSideV…

Ubuntu Server 22.04.5 LTS重启后IP被重置问题

Ubuntu Server 22.04.5 LTS重启后IP被重置问题 最近在使用Ubuntu Server 22.04做项目开发测试时发现每次重启和关机后&#xff0c;所设置的静态IP地址都会回复到安装系统时所设置的ip Ubuntu Server 22.04 官网下载地址&#xff1a;Ubuntu官方下载地址 对虚拟机下安装Ubuntu感…

kube-proxy的iptables工作模式分析

系列文章目录 iptables基础知识 文章目录 系列文章目录前言一、kube-proxy介绍1、kube-proxy三种工作模式2、iptables中k8s相关的链 二、kube-proxy的iptables模式剖析1.集群内部通过clusterIP访问到pod的流程1.1.流程分析 2.从外部访问内部service clusterIP后端pod的流程2.1…