最近组里来了新人,小张网管例行给大家做个培训,顺带记录一下内容,方便后续大家查看。
本文仅介绍基本的服务器登录内容,更详细的服务器管理方法内容可以参看姊妹篇:
感谢的合作者:郑欣然,刘洋洋,张瀚文
Step0:Todo List#
你需要做的事情:
- 下载MobaXterm完成服务器的连接
- 使用命令行创建一个文件夹
- 使用VIM中文件夹中创建一个文件,随便写个Hello World并进行保存\
- 下载Anaconda,并创建一个虚拟环境
- 使用Vscode/Trae完成远程服务器的链接,并尝试创建一个Python代码:print(“hello world”),然后在创建的虚拟环境中执行这个python脚本
Step1:连接服务器#
下载所需软件#
可以下载SSH软件用于远程服务器的连接,常见的有MobaXterm【推荐】、Xshell、putty等;IOS端也可以使用Termius。
MobaXterm free Xserver and tabbed SSH client for Windows ↗
如果以上都不想下载,也可以使用自带的控制台或者powershell,在控制台中输入如下命令,其中portname是端口号,username是用户名,xxx.xxx.x.xxx是域名
ssh -p portnumber username@xxx.xxx.x.xxxxpowershell可以使用scp命令上传和下载文件,细节参看如下链接:
windows cmd使用ssh连接Linux以及文件上传_Ark方舟的博客-CSDN博客_ssh windows上传文件到linux服务器 ↗
登陆域名#
以MobaXterm为例,依次点击 Session - SSH 在Remote host中输入服务器的ip地址,在Port中输入端口号,点击OK即可完成SSH链接的创建。
此时左侧的User sessions会多出一个SSH链接,名称为你输入的ip地址,点击该链接,右侧的命令行会出现登录界面:

输入账号后回车,继续输入密码,此时注意,输入的密码是不显示的。

输入完成后再按回车即可登录。
Step2:基本操作#
在实际的使用中,我们一般是直接借助MobaXterm的目录页面进行文件的跳转和目录操作的,这个一看就会,就不仔细介绍了。下面我们给出一些基本的shell 命令。不复杂的命令我就不一一给出结果了,请大家自己实验一下,便于掌握这些常用的命令。
快捷输入#
- 鼠标左键选中文本时自动就会复制【而不是Ctrl+C,如果使用Ctrl+C则会退出当前的任务】
- 鼠标右键单击则是粘贴
- 方向键的【↑/↓】类似Matlab可以返回历史的输入
- 制表符Tab可以用于文件的补齐,例如需要执行某python脚本【abcde.py】时,你可以输入“python a”之后按下Tab,就可以自动补齐【python abcde.py】。这一点在输入路径时也可以使用。当然,如是有重复文件时,结果会略有不同,请自行尝试一下。
- Ctrl+L --- 清屏操作,clear命令可以起到同样的作用
- Ctrl+C --- 可以终止程序运行过程
- Ctrl+Z --- 可以暂停程序运行过程
其它的内容可以参看:
路径操作#
# 1.查看当前路径
pwd
# 2.跳转到绝对路径
# 在这里【/home/xin/Public/】 是你的绝对路径,你可以从任何一个位置跳转到该位置下。
cd /home/xin/Public/
# 3.跳转到相对路径
# 考虑到绝对路径往往太长,你可以使用相对路径进行跳转,例如你想跳转到当前工作目录下的另一个目录
# 比如当前工作目录是【/home/xin/】你想跳转到【/home/xin/Public/】下,那就可以使用
cd ./Public
# 或者也可以使用该方法跳转到和当前工作目录平行的另一个目录中
# 比如当前工作目录是【/home/xin/】你想跳转到【/home/pub】下,那就可以使用
cd ../pub
# 在这里【.】代表当前目录,【..】代表当前目录的父目录
# 如果你想跳转到当前目录的父目录,也可以直接使用
cd ..
# 类似地,你还可以跳转到【更】上一级的目录
cd ../..
# 或者上一级目录的平行目录
cd ../../doc
# 如果你想回到当前用户的默认路径,则可以使用
cd ~shell当然,一个简单的方法是,可以同通过MobaXterm的目录找到目标文件/文件夹,然后复制文件/文件夹的绝对路径进入shell中进行跳转。
文件和目录操作#
目录操作#
# 1.查看目录下的文件
# ls命令会显示当前目录下的全部文件和文件夹
# 在彩色终端下,会显示所有的文件,其中蓝色一般代表文件夹、白色代表文件、紫色代表图片、红色是压缩包
ls
# 非彩色的终端下,则需要用下面命令区分文件和文件夹,返回结果在文件夹后方会加入一个【/】
ls -F
# 如果要展示文件夹中的子文件,则需要加入-R参数,如下两个命令均可
ls -R
ls -F -R
# 下面的命令会显示隐藏文件/文件夹
ls -a
# 下面的命令会显示文件和文件夹的作者、文件的权限和创建的日期,文件权限在此不做讲解。
ls -l
# 当内容过多时,下面的命令可以查看特定的文件,例如我们想查看文件【main.py】的信息
# 注意后缀【.py】不能省略,否则会报错No such file or directory
ls -l main.py
# 但是当我们想查看多个带有main的文件信息时,也可以使用通配符*,
# 用来批量查看如【main1.py、main2.py】的文件
ls -l main*
# 其它通配符如[]、{}的使用请查看文末附录,当然你也可以使用其它的参数,例如
ls -R My_dir
# 2.创建目录
# 使用如下命令可以在当前目录下创建一个文件夹
mkdir New_dir
# 创建完成后可以使用ls命令进行查看
ls -l New_dir
# 若是想批量创建文件夹和子文件夹,则需要添加参数 -p
mkdir -p New_dir/Sub_dir/Under_dir
# 创建完成后可以使用ls命令进行查看
ls -R New_dir
# 当然,若是使用这种方法查看New_dir下的所有子文件,会有些乱,可以使用下面这个命令查看
tree New_dir
# 3.删除目录
rmdir New_dir
# 这一命令仅能删除空目录,若是要删除非空目录,请查看文件管理这一节shell文件管理#
# 1.创建文件
touch test_one
ls -l test_one
# 2.写入文件
# 如何使用VIM请查看下一节
vim test_one
# 3.查看文件,下面三种方法都可以,less是more的升级版,出自【less is more】
# more和less均是按q键退出,其余参数请自行查阅了解
cat test_one
more test_one
less test_one
# head/tail会显示文件的头/尾几行,如下的命令就会显示test_one的前5行
head -5 test_one
# 4.重命名文件
mv test_one test_two
# 5.移动文件到New_dir
mkdir New_dir
mv test_two New_dir/
# 6.复制文件
touch test_one
# 原文件夹下复制test_one文件命名为test_two,-i是为了避免覆盖本身存在的test_two文件
cp -i test_one test_two
# 复制到新文件夹下
cp -i test_one New_dir/test_two
# 其它文件夹的文件复制到当前文件夹,【.】代表当前文件夹
cp -i Other_dir/test_one .
# 递归复制整个文件夹【Scripts/】
cp -R Scripts/ New_Scripts
# 7.删除文件
# ================================= 注意 ================================= #
'''bash shell中没有回收站,文件一旦删除就无法恢复。-i会提示你是否要删除该文件'''
# ================================= 注意 ================================= #
rm -i test_one
# 删除文件也可以用通配符,下面的命令会删除test_one、test_two等文件
rm -i test_*
# 删除文件夹相对复杂一些,
# 如果要一个个检查是否要删除其中的文件,可以使用
rm -ri New_dir
# 该命令的输出结果如下,会依次询问是否进入目录/子目录,是否删除其中的文件
'''
$ rm -ri New_dir
rm: descend into directory 'New_dir' ? y
rm: remove regular empty file 'New_dir/test_two' ? y
'''
# 当然,如果不想有这些提示,可以使用著名的删库跑路命令
rm -rf New_dir
# 这个命令没有警告信号,请谨慎使用这个命令。
shell文件编辑/VIM#
VIM是Linux命令行中比较常用的文本编辑器,他包含三种模式,分别是正常模式、插入模式和命令模式,这三种模式的切换逻辑如下:
正常模式 (Normal Mode) --按i,a,o等字母进入--> 插入模式 (Insert Mode)
正常模式 (Normal Mode) --按:,/,?等字符进入--> 命令模式 (Command Mode)
插入模式 (Insert Mode) ,命令模式 (Command Mode) --按Esc键进入--> 正常模式 (Normal Mode)
插入模式不能直接进入命令模式,必须先返回正常模式,然后再进入命令模式,反之同理python详解三种模式#
正常模式 - 你的指挥中心
这是你启动 Vim 后进入的默认模式,在这个模式下,你不能直接输入文字。它的作用是让你用单个字母键来高效地移动光标、复制、粘贴、删除文本。把你面前的文本想象成一个需要导航和编辑的“物体”,而不是一个等着你打字的空白文档。
常用操作(记住这几个就够用了):
- 移动光标:h (左), j (下), k (上), l (右)
- 删除字符:按 x 可以删除光标所在的字符。
- 进入插入模式:这是从“指挥”状态切换到“打字”状态的关键命令!
- i:在光标前插入
- a:在光标后插入
- o:在下一行新建一行并插入
- dd 删除整行
- dw 删除一个词
- x 删除当前字符
- yy 复制一行
- p 粘贴内容
插入模式 - 你的打字机
在这个模式下,你可以像使用记事本或 Word 一样,自由地输入和删除文本。你通过按 i, a, o 等键从正常模式进入。如果你想执行保存等命令,必须先回到正常模式。然后再进入
如何返回正常模式?
按 Esc 键 (键盘左上角)。这个键是你在 Vim 里的“返回安全区”按钮!
命令模式 - 你的控制台
在正常模式下,先按一个冒号 :,你就会看到屏幕左下角出现一个冒号光标。在这里,你可以输入命令来执行高级操作,比如保存和退出。最最重要的“生存命令”
- :w - 保存文件 (w 代表 write)
- :q - 退出 Vim (q 代表 quit)
- :wq - 保存并退出 (先 write,再 quit,合起来)
- :q! - 不保存强制退出 (! 代表强制)。当你改乱了东西想重来时,就用这个!
常用快捷键:
超全的Vim常用快捷键,建议收藏备用!-腾讯云开发者社区-腾讯云 ↗
程序运行#
在此仅介绍如何运行python脚本
# 执行python脚本
# 首先进入conda虚拟环境
conda activate your_env
# 切换到目标目录
cd your_python_file_path
# 运行进程
python your_python_file.py
# 但是这一方法常常导致python脚本在当前窗口运行,一旦窗口关闭,则脚本就会中断。
# 使用如下的脚本可以让命令在后台运行
nohup python your_python_file.py >> ./output.log 2>&1 &
# python your_python_file.py是执行的命令
# ./output.log是输出的文件
shell也可以调用后台窗口命令 screen(没有请联系服务器管理员下载)
# 创建名为WindowsName的窗口
screen -R WindowsName
# 在新窗口中进行程序的运行,
python xxxxxx
# 退出当前窗口,按下快捷键ctrl+a+d
# 列出当前全部窗口
screen -ls
# 显示结果如下,这里我建立了两个同名的窗口,但是PID不同
91251.WindowsName (2024年09月18日 19时40分28秒) (Detached)
86265.WindowsName (2024年09月18日 18时29分31秒) (Detached)
# 删除指定窗口
screen -S 91251.WindowsName -X quitshell进程管控#
# 1.查看进程,按q键退出窗口
top
# ======================== 该命令各个参数含义如下 ======================== #
# PID:进程ID【这个记住,在后面终止进程中会使用】
# USER:进程宿主【就是谁运行的进程】
# PR:进程的优先级
# NI:进程的谦让度
# VIRT:进程占用的虚拟内存
# RES:进程占用的物理内存
# SHR:进程和其它进程共享的内存
# S:进程的状态,D/R/S/T/Z分别代表:可中断的休眠/运行/休眠/停止/僵化
# %CPU:进程使用CPU的时间比例
# %MEM:进程使用的内存占可用内存的比例
# TIME+:运行时长
# COMMAND:进程启动的程序名,如Python test.py的程序名就是python
# ====================================================================== #
# 这个命令用于查看zhangxin运行的进程
top -u zhangxin
# 也可以在输入top后输入u,然后输入查看宿主的全名
# 2.查看显卡使用情况
# 可以使用如下命令,可以查看链接看看具体用法
nvidia-smi
# 或者nvtop,这一命令需要管理员安装nvtop
nvtop
# 3.终止进程
# 要终止进程,必须是进程的宿主或登录为root用户\
# 终止PID为1234的进程可以使用
kill 1234
# 但有时服务会不服管教hhh,所以强制终止需要添加参数-9
kill -9 1234
# 若找不到PID,可以使用进程名来结束
killall command_nameshellubuntu下实时查看GPU使用情况的两种方式(nvidia-smi、gpustat)及结束占用GPU进程的命令_zeeq_的博客-CSDN博客_ubuntu查看gpu使用情况 ↗
Step3:VScode/Trae等编辑器远程链接服务器#
VSCode通过Remote - SSH扩展实现远程开发。连接后,你可以在本地VSCode界面中直接操作远程服务器上的文件和终端,代码编辑、扩展安装、调试等功能与本地开发体验几乎一致
安装VSCode:从官方网站 ↗下载并安装
1.VScode免密登录#
在windows powershell输入
ssh-keygen -t rsapowershell一直点enter即可

查看公钥:
cat ~/.ssh/id_rsa.pubpowershell手动复制密钥

打开VScode
登录服务器并打开终端
手动添加公钥:
mkdir -p ~/.ssh
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keysbash
Step4:深度学习相关#
环境配置#
1.anaconda的安装与使用#
最新的服务器不再内置公用的anaconda,可以选择自行下载最新版本,参照下图,12,13行可忽略
# 新建临时文件夹用于存储安装包
mkdir ./tmp
# 进入临时文件夹
cd ./tmp
# 从官网下载anaconda:
# 在https://repo.anaconda.com/archive/ 下查看可用版本,选用linux-x86_64的
# 右键复制链接,使用wget命令下载到当前路径,例如:
wget https://repo.anaconda.com/archive/Anaconda3-2025.06-1-Linux-x86_64.sh
# 也可以使用cp命令从目标目录复制到当前路径
cp /home/share/*.sh ./anaconda.sh
# 执行文件即可安装
bash ./*.sh
安装过程中的服务条款阅读部分,可以按q键跳过shell装完之后可能发现conda命令还是不存在,可参考以下链接
【Linux】conda: command not found解决办法-CSDN博客 ↗
vim命令进入后,按i进入编辑,esc推出编辑,:wq!保存并退出,:q退出
自动激活虚拟环境#
安装完成之后,我们会看到一个是否让 conda 在每次打开终端时自动激活的选项。我们正常是选择yes的(选了yes就不用在考虑后面的事情了),由于查阅本教程安装conda部分的同学往往是第一次接触终端交互,而终端交互与图形交互存在巨大差异,在ai盛行的时代,很容易出现的错误就是安装时试图查询ai,错误使用windows系统的快捷键ctrl+C,但在linux系统中为停止键,导致我退出了后续进程。在这种情况下除了卸载重装我们还提供以下解决方案:

设置临时PATH
export PATH="/home/用户名/anaconda3/bin:$PATH"shell验证conda是否有用
conda --versionshell执行初始化
conda init bashshell从新加载配置
source ~/.bashrcshell这时候我们可以看到base环境被激活了,因为conda init bash会调用conda shell.bash hook,输出一些适合bash的初始化脚本,之后修改 ~/.bashrc 文件,添加这些初始化脚本。这些自动化脚本默认会让新终端自动进入 (base) 环境并且设置命令提示符显示当前环境 (base) 等一些功能。
但是由于现在的终端还是老终端,他不会显示(base),但是如果你直接打开新终端(或者打开一个新窗口),他会显示(base),所以我们运行 source ~/.bashrc,这个代码的意思就是(source命令)在当前shell环境中执行指定文件中的命令。执行完 ~/.bashrc 文件里面的自动化脚本后,我们就能看到(base)提示符了。
补充题外话是,~/.bashrc这个文件实际上是存放着局部环境变量的脚本,环境变量是一些键值对,PATH这个环境变量就是用来告诉系统和程序目录所在地,如果没有path,那我们使用命令时就必须告诉系统完整的路径,例如使用ls这个命令,就只能输入/usr/bin/ls而不是简单的ls了

我们可以验证 conda init bash 的确是生成了相应初始化脚本,打开目录里面的.bashrc文件,会在末尾发现写入的代码块。

2.cuda版本的设定#
具体安装的版本与路径可以联系相应服务器的网管师兄
cuda版本主要取决于pytorch版本,具体可以去www.pytorch.org官网看,或者镜像源中应该有标注不同pytorch对应的cuda版本和python版本
服务器里有什么cuda版本可以到路径下查看
nvcc -V命令source完之后也查不到版本是正常现象,pytorch安装完了之后应该就没问题了
# 查看当前cuda版本
nvcc -V
# 修改用户环境变量
vim ~/.bashrc
# 在文本文件末尾添加如下内容
export PATH="/usr/local/cuda-10.2/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH"
# 添加完成后退出,使用如下命令使得修改生效
source ~/.bashrc
shell3.pytorch的安装#
官网是www.pytorch.org,也可以用镜像源安装
PyTorch安装教程(Linux)_linux anzhuang pytorch1.4 qinghuayuan-CSDN博客 ↗
可参考此链接,注意python=这里要写自己的python版本
有时服务器里没有我们想要的python版本,这时候我们需要自己安装anaconda,然后创建环境,但由于没有root权限,安装参考以下链接
Linux环境下非root用户安装Python及相关库_linux免安装python-CSDN博客 ↗
具体的cuda和pytorch还有驱动的版本对应参考下面链接,安装成cpu版本的问题以下链接也有解决方案
可用conda list命令,然后下拉到pytorch那行,观察是否安装成cpu版本
手把手教你在linux上安装pytorch与cuda_linux系统下安装pytorch和cuda-CSDN博客 ↗
注意,cuda不需要安装
进入虚拟环境后验证print(torch.cuda.is_available())命令,可能为false,除了链接中讲到的一些可能,还可能是由于numpy版本的问题,具体解决方案参考如下链接
numpy升级与降级_numpy版本如何降低-CSDN博客 ↗
退出虚拟环境用conda deactivate,具体参考以下链接
conda创建、进入、退出、删除虚拟环境_退出conda环境-CSDN博客 ↗
测试时输入python,回车,进入python,然后可开始测试,quit()可退出python
附录#
参考书籍:#
我一般用的是下面这本,可以来1344借阅。
网上有说这本也不错,认识我的朋友可以联系我拿电子版,陌生朋友就自力更生吧。
致谢:能作出此文也要感谢温媛老师,谢谢她的《操作系统与计算机网络》一课领我踏入了Unix的大门,也谢谢zyh,如果没陪他蹭课,我也没机会听这门课。