书生大模型实战营第四期-闯关挑战L0G1000 Linux基础知识答卷
定义名称为test,Cuda版本为12.2,资源配置选择10%,时长默认为8hSSH全称Secure Shell,中文翻译为安全外壳,它是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。SSH 协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。
目录
3.可选任务1:Linux基础命令(代码展示,已在开发机完成,本点末尾部分截屏提供)
1. InternStudio开发机介绍
(1)创建开发机:
定义名称为test,Cuda版本为12.2,资源配置选择10%,时长默认为8h
创建完成后在开发机界面看见刚刚创建的开发机:
2.SSH连接及端口映射
(1) SSH简介:
SSH全称Secure Shell,中文翻译为安全外壳,它是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。SSH 协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。
(2)使用SSH远程连接开发机
方法一:使用密码进行SSH远程连接
在开发机端点击“SSH连接”按钮,得到SSH连接的命令和密码,分布复制输入本地机的powerShell中,进行SSH远程连接
方法二:配置SSH密钥进行SSH远程连接
每次远程连接都需要输入密码比较麻烦,我们可以设置SSH key来跳过输入密码这一步骤,在ssh命令中我们可以使用ssh-keygen来生成密钥:ssh-keygen -t rsa
生成密钥后可以在本地机的powerShell中看见,复制并回到开发机平台,在首页点击配置SSHkey,添加SSH公钥,最后添加成功得到以下界面:
方法三:使用VSCode进行SSH连接
首先在本地机的VSCode上安装插件:Remote - SSH,安装完成后点击侧边栏的远程连接图标,在SSH中点击“+”按钮,添加开发机SSH连接的登录命令,在弹出的窗口处输入SSH连接命令,回车后再在密码输入行输入对应的密钥,即可完成连接,且下一次再进行远程连接的时候就不需要输入登录命令等信息了,完成后VSCode显示如下界面:
(3)端口映射
端口映射是一种网络技术,可以将外网中的任意端口映射到内网中的相应端口,实现内外网之间的通信。通过端口映射,可以在外网访问内网中的服务或应用,实现跨越网络的便捷通信。
通过以下例子来完成并理解端口映射:
方法一:使用SSH来进行端口映射
我们在开发机端创建一个hello_world.py文件,该文件的作用是创建一个简单的 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()
然后在开发机的终端输入命令:python hello_world.py,其返回信息如下:
该段返回信息中Running on local URL: http://127.0.0.1:7860表示Gradio应用正在本地运行,并可以通过这个URL访问,7860是Gradio默认的端口号。
但是当我试图去用本地机的浏览器打开这个链接会发现拒绝访问,这是因为我还没有在本地机和开发机之间建立端口映射,故我需要在本地机的powerShell中输入以下命令来建立端口映射:
ssh -p 42551 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
其中,42551代表本地机端口,7860:127.0.0.1:7860,前面的7860是本地机的对应端口,后面的7860是开发机的对应端口(该端口此时在运行上述的hello_world.py程序)。在本机输入上述命令后窗口无反应代表端口映射正在运行(若想要退出可使用快捷键Ctrl+C)
这样以后再去使用本机浏览器打开http://localhost:7860即可打开如下的页面:
方法二:使用VSCode进行端口映射
VSCode会自动生成代理链接,不需要手动配置,直接在VSCode的PORTS栏点击进去就可以看见目前的端口状态:
3.可选任务1:Linux基础命令(代码展示,已在开发机完成,本点末尾部分截屏提供)
(1)文件管理
touch:快速创建文件
touch demo.py
mkdir:快速创建目录
mkdir test
cd:改变当前工作目录
cd /path/to/directory #进入指定目录
cd .. #进入上一级目录
cd ~ #进入用户主目录
cd / #进入根目录
cd - #返回到之前的目录
cd . #进入当前目录(无变化)
pwd:查询当前所在目录(直接打入pwd即可)
cat:查看文件里面的内容
cat file.txt #查看file.txt的内容
cat file1.txt file2.txt #将多个文件连接输出
find:在指定的目录及其子目录中查找符合条件的文件或目录,并执行相应的操作
find /path/to/search -name "filename" #在 /home 目录下查找名为 document.txt 的文件
find /home -name "*.txt" #查找特定类型的文件(如 .txt 文件)
ls:列出目录的内容以及详细信息
sed:用于对文本文件进行快速编辑,通常用于查找和替换操作
sed 's/search/replace/g' filename #将文件 filename 中所有匹配 search 的字符串替换为 replace
sed -n '/pattern/p' filename #仅输出符合特定模式的行
(2)进程管理
ps:显示当前系统中的进程信息
top:动态实时显示系统中的进程信息,包括CPU和内存使用情况
htop:top的增强版,提供更友好的界面和交互方式
kill:通过进程ID(PID)终止进程
pkill:根据进程名称终止进程,而不需要知道具体的进程ID
nice和renice:nice用于启动一个进程并指定其优先级,renice用于调整已运行进程的优先级
nice -n 10 command #启动一个进程并设置优先级(nice 值从 -20 到 19,值越小,优先级越高)
renice priority PID #调整已运行的进程优先级
bg和fg:管理后台和前台进程
bg #将一个暂停的任务置于后台运行
fg ##将后台任务恢复到前台运行
jobs:列出当前shell会话中的后台任务
strace:跟踪进程的系统调用,通常用于调试进程行为
strace -p PID #跟踪进程的系统调用,通常用于调试进程行为
ps aux | grep process_name
ps aux | grep python #查找所有正在运行的 python 进程
(3)工具使用——TMUX
TMUX通过包管理器安装:
sudo apt install tmux # 对于 Ubuntu/Debian
sudo yum install tmux # 对于 CentOS/Fedora
启动一个新的TMUX会话,直接输入“tmux”即可,或给会话指定一个名字
要退出tmux模式,快捷键“Ctrl+D”
tmux new -s session_name #创建一个新的 TMUX 会话,并命名为 session_name
(4)部分操作的截屏展示
4.可选任务2:VSCode远程连接创建Conda环境
(1)VSCode远程连接
确保VSCode的Remote - SSH扩展连接到开发机,并且已在终端中创建并激活了Conda环境
(2)创建Conda环境:
在VSCode打开的终端Terminal中输入以下命令:
conda create -n challenge1_3 python=3.9 #创建名为“challenge1_3”的conda环境
输入后得到以下回应:
(3)激活环境:
创建完成后,输入以下命令激活该环境:
conda activate challenge1_3
(4)选择解释器:
按住“Ctrl+Shift+P”,输入“Python: Select Interpreter”,选项中选择刚刚创建challenge1_3。
(5)检查环境是否创建成功:
可以在conda的env目录下找到刚刚创建的challeng1_3
5.可选任务3:创建并运行test.sh文件
(1)VSCode远程连接并打开终端
VSCode进行SSH连接,并打开终端
(2)使用vim创建文件并编写脚本
输入以下代码,使用vim创建文件
vim test.sh
在vim中。按“i”进入插入模式,继而编写脚本,输入脚本内容:
#!/bin/bash
echo "Hello, World! challenge1_3"
按Esc退出插入模式,然后输入":wq"并按Enter保存文件并退出vim
(3)赋予执行权限
在终端中运行以下命令,使脚本可执行:
chmod +x test.sh
(6)运行脚本并验证输出
通过以下命令来运行test.sh文件:
./test.sh
在终端看见返回信息,运行成功,任务完成:
Hello, World! Challenge1_3
(7)VSCode运行上述代码验证截屏
更多推荐
所有评论(0)