Linux+InternStudio(入门)

学习地址

1 SSH远程连接

win电脑win+r再输入powershell,复制登录命令和密码但是显示
在这里插入图片描述
因为是用ctrl v粘贴,光标位置没动,据说密码光标位置就是不动的,发现右键一下就可以粘贴啦~(已解决)
在这里插入图片描述
可以使用hostname查看开发机名称,使用uname -a查看开发机内核信息,使用lsb_release -a查看开发机版本信息,使用nvidia-smi查看GPU的信息,这些命令我们后面都会讲到,如果想要退出远程连接,输入两次exit就可以了。

配置配置SSH密钥(不用每次输密码了)

还是在powershell,输入ssh-keygen -t rsa,一直回车,就可以看到C:\Users{your_username}.ssh下有一个pub文件,直接点进去复制到首页的添加密钥就可以啦

vscode远程连接

下载好ssh插件后输入远程连接命令,再连接就能看到远程的文件啦
在这里插入图片描述

2 端口映射

内网的资源没法在外网加载,比如开发机上面的网页demo在你的电脑上就看不到,所以通过端口映射,将外网链接映射到我们本地主机,我们使用本地连接访问,解决这个代理问题
在这里插入图片描述
个人PC会远程连接到开发机唯一暴露在外的37367端口,(这个在SSH的时候提到过每个人的开发机暴露的端口都不一样),并设置隧道选项。暴露端口是作为中转站进行流量的转发。

-C:启用压缩,减少传输数据量。
-N:不执行远程命令,只建立隧道。
-g:允许远程主机连接到本地转发的端口。
当在个人PC上执行这个SSH命令后,SSH客户端会在本地机器的7860端口上监听。

任何发送到本地7860端口的流量,都会被SSH隧道转发到远程服务器的127.0.0.1地址上的7860端口。

这意味着,即使开发机的这个端口没有直接暴露给外部网络,我们也可以通过这个隧道安全地访问远程服务器上的服务。

在powershell中先退出远程连接(两次exit)在输入下图自己的命令(在开发机的自定义服务中)在这里插入图片描述
在开发机的vscode里面创建一个helloworld.py的文件,然后切换到开发机终端里面pip install gradio==4.29.0 再python helloworld.py

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/202406301604074.jpg" alt="Logo" width="20%" style="border-radius: 5px;">
                </a>
            </p>

            """
    gr.Markdown(html_code)

demo.launch()

发现网页端口7860是没有办法访问的
在powershell中输入命令ssh -p [你的开发机主机端口号] root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no 发现网页可以访问啦,把powershell断掉就又连不上了

使用 vscode 进行端口映射

运行不同的web ui的话,需要重复输入命令,用vscode不需要重复输入哦,“Ctrl+Shift+~”快捷键唤醒终端,添加端口7860
在这里插入图片描述
页面就又可以访问了

3 Linux 基础命令

文件管理

  • 创建文件:可以使用 touch 命令创建空文件。
  • 创建目录:使用 mkdir 命令。 目录切换:使用cd命令。
  • 显示所在目录:使用pwd命令。
  • 查看文件内容:如使用 cat 直接显示文件全部内容,more 和 less 可以分页查看。
  • 编辑文件:如vi 或 vim 等编辑器。
  • 复制文件:用 cp 命令。
  • 创建文件链接:用ln命令。
  • 移动文件:通过 mv 命令。
  • 删除文件:使用 rm命令。
  • 删除目录:rmdir(只能删除空目录)或 rm -r(可删除非空目录)。
  • 查找文件:可以用 find 命令。
  • 查看文件或目录的详细信息:使用ls命令,如使用 ls -l查看目录下文件的详细信息。
  • 处理文件:进行复杂的文件操作,可以使用sed命令
    在这里插入图片描述
    mkdir创建目录 touch创建文件
    cat 命令显示文件内容

-a,–show-all等价于-vET
-b,–number-non空白数非空输出行,覆盖-n
-e, 等价于-vE
-E,–show-结束显示$在每一行的末尾
-n,–number编号所有输出行
-s,–crick-空白抑制重复的空输出行
-t等价于-vT
-t,–show-tabs将制表符显示为^I
-v,–show非打印使用^和M-表示法,LFD和TAB除外

vim 编辑器

进入插入模式 在打开文件后,按 i 键进入插入模式,可以开始编辑文本。

保存文件并退出

  • 退出插入模式:按 Esc 键。
  • 保存文件并退出:输入 :wq 并按 Enter
  • 仅保存文件:输入 :w 并按 Enter
  • 仅退出:输入 :q 并按 Enter
  • 强制退出(不保存):输入 :q! 并按 Enter

撤销和重做

  • 撤销上一步操作:按 u
  • 重做撤销的操作:按 Ctrl+r

删除行

  • 删除当前行:按 dd

复制和粘贴

  • 复制当前行:按 yy
  • 粘贴复制的内容:按 p

cp ln
复制文件:cp 源文件 目标文件
复制目录:cp -r 源目录 目标目录

ln连接在linux里面分为硬链接和软链接,硬链接是指不同的名字指向同一个文件,软链接是一个文件的内容指向另一个另一个文件,保存的是位置。这样就能发现,硬链接在同一个文件系统中,软链接可以跨越不同的文件系统
ln [参数][源文件或目录][目标文件或目录]

-s:创建软链接(符号链接)也是最常用的;
-f:强制执行,覆盖已存在的目标文件;
-i:交互模式,文件存在则提示用户是否覆盖;
-n:把符号链接视为一般目录;
-v:显示详细的处理过程

mvrm
都是对文件和目录操作,mv是移动,rm是删除
在这里插入图片描述
find:查找文件
以下是find命令的一些常见用法:

  • 按文件名查找:使用-name选项按照文件名查找文件。例如,find /path/to/directory -name "file.txt"将在指定目录及其子目录中查找名为file.txt的文件。
  • 按文件类型查找:使用-type选项按照文件类型查找文件。例如,find /path/to/directory -type f将查找指定目录及其子目录中的所有普通文件。
  • 按文件大小查找:使用-size选项按照文件大小查找文件。例如,find /path/to/directory -size +100M将查找指定目录及其子目录中大于100MB的文件。
  • 按修改时间查找:使用-mtime、-atime或-ctime选项按照文件的修改时间、访问时间或状态更改时间查找文件。例如,find /path/to/directory -mtime -7将查找指定目录及其子目录中在7天内修改过的文件。
  • 按文件权限查找:使用-perm选项按照文件权限查找文件。例如,find /path/to/directory -perm 755将查找指定目录及其子目录中权限为755的文件。
  • 按用户或组查找:使用-user或-group选项按照文件的所有者或所属组查找文件。例如,find /path/to/directory -user username将查找指定目录及其子目录中属于用户username的文件。
  • 执行操作:使用-exec选项可以对找到的文件执行相应的操作。例如,find /path/to/directory -name “*.txt” -exec rm {} ;将删除找到的所有以.txt结尾的文件。

ls列出目录内容

-a:显示所有文件和目录,包括隐藏文件(以.开头的文件或目录)。
-l:以长格式显示详细信息,包括文件权限、所有者、大小、修改时间等。
-h:与-l结合使用,以人类可读的方式显示文件大小(如K、M、G等)。
-R:递归列出子目录的内容。
-t:按文件修改时间排序显示。

sed流编辑器,echo打印
echo 'llm' >file 把llm这个字符打印到file文件,cat file显示内容,sed 's/llm/llm agent/g file'对file中的字符进行文本替换
上面的>是一个管道符,常见的还有< |,比如pip list | grep os在python安装包中找os字段的包,grep是一个强大的文本搜索

好多好复杂,记不住也没关系,只要会用最常用的,其他参数啥的直接输入–help具体问题具体查询即可。

进程管理

ps:查看正在运行的进程
top:动态显示正在运行的进程
pstree:树状查看正在运行的进程
pgrep:用于查找进程
nice:更改进程的优先级
jobs:显示进程的相关信息
bg 和 fg:将进程调入后台
kill:杀死进程 kill PID # 杀死指定的进程ID, kill -9 PID # 强制杀死进程

nvidia-smi可以监控和管理GPU设备
nvidia-smi 是 NVIDIA 提供的命令行工具,用于管理和监控 NVIDIA GPU。以下是一些 nvidia-smi 命令的基本用法:

显示 GPU 的基本信息

nvidia-smi

这个命令会显示系统中所有 GPU 的基本信息,包括 GPU 使用率、显存使用情况、温度等。

查看详细信息

nvidia-smi -q

显示系统中所有 GPU 的详细信息,包括硬件信息、驱动版本、性能状态等。

显示指定 GPU 的信息

nvidia-smi -i <gpu_id>

示例:

nvidia-smi -i 0

显示 GPU ID 为 0 的 GPU 信息。

持续监控 GPU 状态

nvidia-smi -l <interval>

示例:

nvidia-smi -l 5

每隔 5 秒刷新一次 GPU 状态。

查看 GPU 上运行的进程

nvidia-smi pmon -c <count>

示例:

nvidia-smi pmon -c 1

显示每个 GPU 上运行的进程信息。

仅显示 GPU 使用率和显存使用情况

nvidia-smi --query-gpu=utilization.gpu,utilization.memory --format=csv

查看指定 GPU 的功耗

nvidia-smi --query-gpu=power.draw --format=csv

将输出写入文件

nvidia-smi -q -d MEMORY > gpu_memory_info.txt

将所有 GPU 的显存信息输出到 gpu_memory_info.txt 文件中。

设置 GPU 的性能状态

sudo nvidia-smi -pm ENABLED

启用持久模式,以提高性能。

sudo nvidia-smi -pm DISABLED

禁用持久模式。

设置 GPU 的显存时钟和图形时钟

sudo nvidia-smi -ac <mem_clock>,<graphics_clock>

示例:

sudo nvidia-smi -ac 5001,1392

将 GPU 的显存时钟设置为 5001 MHz,图形时钟设置为 1392 MHz。

这些是 nvidia-smi 的一些基本用法,可以帮助你管理和监控 NVIDIA GPU。如果有其他问题或需要进一步的帮助,请随时告诉我。

TMUX

是一个终端多路复用器。它可以在多个终端之间轻松切换,分离它们(这不会杀死终端,它们继续在后台运行)和将它们重新连接到其他终端中,可以解决模型调参时间过长出现程序中断被kill的情况
lsb_release -a ubuntu系统查看系统信息
在这里插入图片描述
安装后,退出tmux可以使用“Ctrl+d”快捷键
具体使用见文档

Conda和Shell

conda --version
在这里插入图片描述
默认安装会慢,所以配置镜像

#设置清华镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
查看信息conda config --show
创建虚拟环境conda create -n name python=3.10
查看conda env list
conda info -e
conda info --envs
激活conda activate
退出conda deactivate
删除某个虚拟环境可以使用conda remove --name name --all,如果只删除虚拟环境中的某个或者某些包可以使用conda remove --name name package_name
获得环境中的所有配置conda env export --name myenv > myenv.yml
重新还原环境conda env create -f myenv.yml

conda和pip

conda可以管理非python包,pip只能管理python包。
conda可以用来创建虚拟环境,pip不能,需要依赖virtualenv之类的包。
conda安装的包是编译好的二进制文件,安装包文件过程中会自动安装依赖包;pip安装的包是wheel或源码,装过程中不会去支持python语言之外的依赖项。
conda安装的包会统一下载到当前虚拟环境对应的目录下,下载一次多次安装。pip是直接下载到对应环境中。

Wheel 格式的主要优点包括:
安装速度快:因为已经进行了预编译,所以在安装时不需要像源码安装那样进行编译过程,节省了时间。
一致性:确保在不同的系统和环境中安装的结果是一致的。

创建虚拟环境的时候出错,重启终端,报错CondaVerificationError,应该原因是某些包在安装过程中出现了损坏,导致无法正确安装和使用。清理缓存conda clean --all 清除坏包 conda remove --force python 再重新创建 conda create -n new_env python=3.10 成功
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值