【书生.浦语实战营】——入门岛_第一关_Linux基础
- 任务分布
- 1. 本地vscode远程连接并进行端口映射
- 端口映射
- What——何为端口映射
- How——怎么进行端口映射
- 2. Linux基础命令
- touch :创建文件
- mkdir :创建目录
- cd:进入 退出 目录
- pwd :确定当前所在目录
- cat:可以查看文件中的内容
- vi 和 vim :编辑文件
- cp 和 ln
- ls:可以用来列出目录的内容以及详细信息
- sed: 流文本编辑
- 进程管理命令
- nvidia-smi 命令
- 远程连接服务器并使用conda创建虚拟环境
- studio-conda使用与Shell
- 第二关
- 完成leetcode383
- 远程连接开发机并debug
- 第三关——git 基础
- 提交个人介绍PR
- 创建一个个人仓库
- 第四关
任务分布
闯关任务 完成SSH连接与端口映射并运行hello_world.py 10min
可选任务 1 将Linux基础命令在开发机上完成一遍 10min
可选任务 2 使用 VSCODE 远程连接开发机并创建一个conda环境 10min
可选任务 3 创建并运行test.sh文件 10min
1. 本地vscode远程连接并进行端口映射
端口映射
What——何为端口映射
端口映射是一种网络技术,它可以将外网中的任意端口映射到内网中的相应端口,实现内网与外网之间的通信。通过端口映射,可以在外网访问内网中的服务或应用,实现跨越网络的便捷通信。
How——怎么进行端口映射
使用 ssh命令进行
ssh -p 37367 root@ssh.intern-ai.org.cn -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
vscode 也可以自动进行端口映射
2. Linux基础命令
创建文件:可以使用 touch 命令创建空文件。
创建目录:使用 mkdir 命令。
目录切换:使用cd命令。
显示所在目录:使用pwd命令。
查看文件内容:如使用 cat 直接显示文件全部内容,more 和 less 可以分页查看。
编辑文件:如 vi 或 vim 等编辑器。
复制文件:用 cp 命令。
创建文件链接:用ln命令。
移动文件:通过 mv 命令。
删除文件:使用 rm 命令。
删除目录:rmdir(只能删除空目录)或 rm -r(可删除非空目录)。
查找文件:可以用 find 命令。
查看文件或目录的详细信息:使用ls命令,如使用 ls -l查看目录下文件的详细信息。
处理文件:进行复杂的文件操作,可以使用sed命令。
touch :创建文件
touch demo.py
mkdir :创建目录
mkdir test
cd:进入 退出 目录
pwd :确定当前所在目录
cat:可以查看文件中的内容
vi 和 vim :编辑文件
关于这个,详见笔者之前文章
cp 和 ln
复制文件:cp 源文件目录 目标文件目录
复制目录:cp -r 源目录 目标目录
例如:复制根目录下的hello_world.py文件到test中
命令:
结果:
如果直接使用 cp 命令来复制这些模型文件,尤其是当需要多次复制同一份模型文件时,会导致磁盘空间的大量消耗。例如,在进行模型测试、调优或者部署多个实例时,可能会重复复制同一份模型数据,这样每一份都是独立的副本,自然会占用更多的磁盘空间。
相比之下,使用符号链接(软链接)或硬链接可以有效地减少磁盘空间的使用:
硬链接:对于硬链接而言,文件系统中的多个文件名实际上指向同一个inode(文件的数据存储单元)。因此,即使创建了多个硬链接,文件的实际内容只存储一次,不会增加额外的磁盘空间需求。不过,硬链接只能在同一文件系统内创建。软链接(符号链接):软链接 **类似于Windows中的快捷方式** 。它是一个指向另一个文件路径的特殊文件。软链接文件本身包含了目标文件的路径信息,而不是实际的数据。因此,创建多少个软链接都不会增加磁盘空间负担,只是存储了路径信息而已。软链接可以跨越不同的文件系统。
使用:
ln [参数][源文件或目录][目标文件或目录]
ls:可以用来列出目录的内容以及详细信息
-a:显示所有文件和目录,包括隐藏文件(以.开头的文件或目录)。
-l:以长格式显示详细信息,包括文件权限、所有者、大小、修改时间等。
-h:与-l结合使用,以人类可读的方式显示文件大小(如K、M、G等)。
-R:递归列出子目录的内容。
-t:按文件修改时间排序显示
按修改时间顺序进行展示
sed: 流文本编辑
进程管理命令
ps
:列出当前系统中的进程。使用不同的选项可以显示不同的进程信息
ps nux
:显示系统所有进程的详细信息
top
:动态显示系统中进程的状态。它会实时更新进程列表,显示CPU和内存使用率最高的进程。
pstree
:以树状图的形式显示当前运行的进程及其父子关系
kill PID
:杀死指定的进程ID
kill -9 PID
:强制杀死指定的进程ID
nvidia-smi 命令
显示 GPU 状态的摘要信息:
nvidia-smi
显示详细的 GPU 状态信息:
nvidia-smi -l 1
这个命令会每1秒更新一次状态信息。显示 GPU 的帮助信息:
nvidia-smi -h
列出所有 GPU 并显示它们的 PID 和进程名称:
nvidia-smi pmon
强制结束指定的 GPU 进程:
nvidia-smi --id=0 --ex_pid=12345
这会强制结束 GPU ID 为 0 上的 PID 为 12345 的进程。设置 GPU 性能模式:
nvidia-smi -pm 1
nvidia-smi -i 0 -pm 1
第一个命令会为所有 GPU 设置为性能模式,第二个命令只针对 ID 为 0 的 GPU。重启 GPU:
nvidia-smi --id=0 -r
这会重启 ID 为 0 的 GPU。
引用自课程学习手册
远程连接服务器并使用conda创建虚拟环境
- 开发机中已经安好了conda
conda --version
:查看conda版本
要对conda进行换源,提速 - 创建虚拟环境
使用conda create -n name python=3.10创建虚拟环境,这里表示创建了python版本为3.10、名字为name的虚拟环境。创建后,可以在.conda目录下的envs目录下找到。
常用的是激活环境命令
conda activate 环境名字
:激活环境
conda deactivate 环境名字
:退出环境
conda env list
:查看环境列表
conda list
:查看当前环境下安装的包
studio-conda使用与Shell
studio-conda
:开发机内置的命令。使用shell脚本实现
第二关
完成leetcode383
class Solution:def canConstruct(self, ransomNote: str, magazine: str) -> bool:# 字典用于存储字符计数char_count = {}# 统计 magazine 中字符的出现次数for char in magazine:if char in char_count:char_count[char] += 1else:char_count[char] = 1# 检查 ransomNote 中字符是否可以在 magazine 中找到for char in ransomNote:if char in char_count and char_count[char] > 0:char_count[char] -= 1 # 使用一个字符else:return False # 如果 magazine 中没有该字符或用完了return True # 所有字符都可以构成
远程连接开发机并debug
第三关——git 基础
提交个人介绍PR
基本步骤是:
1. fork原始项目
2. git clone 下来
3. 创建修改自己的个人介绍.md
4. add . 添加全部修改
5. git commit -m "提交信息(建议英文)" 合并
6. git push
创建一个个人仓库
第四关
模型下载
这里使用魔搭社区进行下载
下载完就会在目录中看到如下json文件