【书生·浦语实战营】第1关:Linux基础知识
创始人
2024-09-25 10:19:50
0

文章目录

  • 任务目标
  • 学习内容:
  • 任务1
  • 任务2
  • 任务3
  • 任务4
  • 心得体会

任务目标

  • 完成SSH连接与端口映射并运行hello_world.py
  • 将Linux基础命令在开发机上完成一遍
  • 使用 VSCODE 远程连接开发机并创建一个conda环境
  • 创建并运行test.sh文件

学习内容:

任务1

  • 完成SSH连接与端口映射并运行hello_world.py
  1. SSH连接
  • 连接到开发机端口连接到开发机端口
    连接到开发机端口- 输入密码在这里插入图片描述在这里插入图片描述
  • 输入hostname查看开发机名称,使用uname -a查看开发机内核信息,使用lsb_release -a查看开发机版本信息,使用nvidia-smi查看GPU的信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2. 配置SSH密钥进行SSH远程连接
每次远程都输入密码比较麻烦,我们可以设置SSH key来跳过输入密码这一步骤,在ssh命令中我们可以使用ssh-keygen命令来生成密钥
ssh-keygen支持RSA和DSA两种认证密钥。

常用参数包括:

  • -t:指定密钥类型,如dsa、ecdsa、ed25519、rsa。
  • -b:指定密钥长度。
  • -C:添加注释。
  • -f:指定保存密钥的文件名。
  • -i:读取未加密的ssh-v2兼容的私钥/公钥文件。
  • 这里我们使用RSA算法生成密钥,命令为:
ssh-keygen -t rsa 

输入命令后一路回车就可以了,这里的密钥默认情况下是生成在~/.ssh/目录下的,~表示的是家目录,如果是windows就是C:\Users\{your_username}\。在powerShell中可以使用Get-Content命令查看生成的密钥,如果是linux操作系统可以使用cat命令。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
然后我们回到开发机平台,在首页点击配置SSH Key,接着点击添加SSH公钥,将刚刚生成的密钥复制下来,粘贴到公钥框中,名称会被自动识别到,最后点击立即添加,SSH Key就配置完成了。
在这里插入图片描述
完成SSH Key创建以后,重启终端进行远程连接,就会跳过密码输入这一步了。
3. 使用VScode进行SSH远程连接

  • 安装Remote-SSH插件
    在这里插入图片描述
  • 点击侧边栏的远程连接图标,在SSH中点击“+”按钮,添加开发机SSH连接的登录命令,最后回车,然后在右下角弹出来的提示窗口中点击“连接”就可以远程到开发机中了
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  1. 端口映射(本地机上进行)
ssh -p xxxxx root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no 

在这里插入图片描述
5. 运行hello_world.py

  • 首先安装相关库(VScode连接开发机进行操作)
    在这里插入图片描述
  • 再创建文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    进入文件内容编辑页面,按i再将需要写入的文件内容按Ctrl+Shift+v粘贴到当前文件中
    在这里插入图片描述
    输入ESC后,再按:wq保存内容退出编辑,命令行终端输入cat hello_world.py查看内容已经写入:
    在这里插入图片描述
  • 运行文件
    命令行终端输入python hello_world.py
    在这里插入图片描述
    可用看到已经运行成功,可以在之前完成端口映射的本地URLhttp://localhost:7860中看到界面:
    在这里插入图片描述

任务2

  • 将Linux基础命令在开发机上完成一遍
    1.文件管理
  • 创建文件:可以使用 touch 命令创建空文件。
    在这里插入图片描述在这里插入图片描述

  • 创建目录:使用 mkdir 命令。
    在这里插入图片描述
    在这里插入图片描述

  • 目录切换:使用cd命令。
    在这里插入图片描述

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

  • 在这里插入图片描述

  • 查看文件内容:如使用 cat 直接显示文件全部内容,more 和 less 可以分页查看。
    cat命令可以查看文件里面的内容,更多的使用命令可以使用--help命令查看:

-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除外 
  • 编辑文件:如 vivim 等编辑器。
    在这里插入图片描述
    进入编辑模式可以使用ivim的方便之处就是可以在终端进行简单的文件修改。
  • 复制文件:用 cp 命令。
    复制文件:cp 源文件 目标文件
    复制目录:cp -r 源目录 目标目录
    但是如果我们是要使用模型的话,这种操作会占用大量的磁盘空间,所以我们一般使用ln命令,这个就和windows的快捷方式一样。
  • 创建文件链接:用ln命令。
    linux中链接分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
    所以我们一般使用软连接,它的常用的使用方法如下:
    ln [参数][源文件或目录][目标文件或目录]
    参数如下:
-s:创建软链接(符号链接)也是最常用的; -f:强制执行,覆盖已存在的目标文件; -i:交互模式,文件存在则提示用户是否覆盖; -n:把符号链接视为一般目录; -v:显示详细的处理过程。 
  • 移动文件:通过 mv 命令。
    mv命令和rm命令的使用方式很相似,但是mv是用来移动文件或者目录的,同时还可以进行重命名。rm命令则是用来删除文件或者目录的。
    常用参数:
-i:交互模式,覆盖前询问。 -f:强制覆盖。 -u:只在源文件比目标文件新时才进行移动。 

mv demo.py test将demo.py移到test目录中
在这里插入图片描述
mv demp.py test.py将文件demo.py重命名为test.py
在这里插入图片描述

  • 删除文件:使用 rm命令。
  • 常用参数:
-i:交互模式,删除前询问。 -f:强制删除,忽略不存在的文件,不提示确认。 -r:递归删除目录及其内容。 

rm test.py 删除test目录下的test.py文件
在这里插入图片描述
rmdir test删除test文件夹
在这里插入图片描述
rm -r test递归地删除test文件夹
在这里插入图片描述

  • 删除目录rmdir(只能删除空目录)或 rm -r(可删除非空目录)。
  • 查找文件:可以用 find 命令。
    find命令是Linux系统中一个强大的文件搜索工具,它可以在指定的目录及其子目录中查找符合条件的文件或目录,并执行相应的操作。
    以下是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天内修改过的文件。
    atime(Access Time):文件最近被访问时间
    mtime(Modify Time):文件最近内容修改时间
    ctime(Change Time):文件最近权限和属性修改时间
    按文件权限查找:使用-perm选项按照文件权限查找文件。例如,find /path/to/directory -perm 755将查找指定目录及其子目录中权限为755的文件。
  • Linux 文件权限分类
    Linux 文件权限是系统中用于控制对文件和目录访问的重要概念。权限分为‌读(Read)、写(Write)、执行(Execute)三个部分,分别表示对文件的读取、修改和执行操作的权限。文件权限可以分为三类用户:
    ‌文件所有者(Owner):创建、拥有该文件的用户。
    ‌文件所属组(Group):该文件归属的用户组。
    ‌其他用户(Others):除了文件所有者和文件所属组之外的用户。
    chown newuser filename修改文件所有者
    chown newuser:newgroup filename修改文件所有者和组
    chmod -R a+x directoryname
    chown -R newuser:newgroup directoryname递归改变目录权限和所有者
  • Linux 文件权限修改方法
    Linux 系统中,可以使用 ‌chmod 命令来修改文件或目录的权限。chmod 命令有两种用法:符号法和数字法。‌
    符号法:
    u 表示文件所有者
    g 表示所属组
    o 表示其他用户
    r 表示读取权限
    w 表示写入权限
    x 表示执行权限
    例如,要给文件所有者添加执行权限,可以使用 chmod u+x filename 命令。‌
    数字法:
    每个权限用一个数字表示:r=4w=2x=1
    将它们加在一起表示权限组的数值
    例如,要将文件权限设置为文件所有者具有读、写、执行权限(7),同组用户和其他用户具有读、执行权限(5),可以使用 chmod 755 filename 命令。
    按用户或组查找:使用-user-group选项按照文件的所有者或所属组查找文件。例如,find /path/to/directory -user username将查找指定目录及其子目录中属于用户username的文件。
    执行操作:使用-exec选项可以对找到的文件执行相应的操作。例如,find /path/to/directory -name "*.txt" -exec rm {} \;将删除找到的所有以.txt结尾的文件。
  • 查看文件或目录的详细信息:使用ls命令,如使用 ls -l查看目录下文件的详细信息。
    常用参数及使用方法如下:
-a:显示所有文件和目录,包括隐藏文件(以.开头的文件或目录)。 -l:以长格式显示详细信息,包括文件权限、所有者、大小、修改时间等。 -h:与-l结合使用,以人类可读的方式显示文件大小(如K、M、G等)。 -R:递归列出子目录的内容。 -t:按文件修改时间排序显示。 
  • 处理文件:进行复杂的文件操作,可以使用sed命令。
    sed命令是一种流编辑器,主要用于文本处理,在处理复杂的文件操作时经常用到,在后续的课程中会使用到,sed命令常用参数及使用示例如下:
    参数说明:
-e