测试平台使用指南
0.写在前面的提示(随时添加)
- 尽量别在网不好的地方登服务器,校园网老断的时候就用流量,不然connection reset会让你很快背熟密码……
1.下载ssh
1.1.什么是ssh?
下载到我们的电脑上,让它能够连接服务器的工具。
1.2.如何下载ssh?
用管理员权限打开Windows PowerShell(就是那个蓝色的有白箭头的图标,或者cmd也可以),然后直接在弹出的界面输入如下指令:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
就可以啦!
如果你用的是Linux或者macOS系统,据说可以跳过下载ssh的步骤……
2.连接到服务器
2.1.发起连接指令
同样是在powershell或者cmd里,输入指令ssh 用户名@ip地址
,就可以啦!
注意:
-
可能会出现如下提示:
The authenticity of host…Are you sure you want to continue connecting (yes/no)?
这个时候不要大意地输入yes然后回车,就可以啦!
-
ip地址为测试平台地址,详见链接
-
用户名你懂的~
2.2.输入登陆密码
不出意外的话,界面会输出如下文字:
用户名@ip地址’s password:
此时只要输入密码即可。密码这种东西,多输几遍就记住了……吧
注意:
- 这个时候的输入是不显示的,即敲完密码之后界面不会有任何变化,但只要密码输入正确,回车之后就可以正常进入服务器啦~
Welcome to Ubuntu 16.04.5 LTS
2.3.退出服务器
没学会打架,也要先学会逃跑……
退出服务器很简单,ctrl+D即可。删库跑路的最后一步,切记切记……
3.使用服务器
3.1.我们是谁?
为了避免我们删库跑路,我们是只有部分权限的底层用户……
(查看权限方式见附录1)
3.2.我们在哪儿?
正确输入密码并进入服务器之后,在光标前的输出信息是:
用户名@xxx-xx:~$
此处的"~"即当前所在目录,它的路径是
/data/用户名
其中,data的上一级就是根目录啦~也就是说,我们可以在登录之后的地方直接进行我们的操作。当然,如果想要探索这个奇妙的地方,也可以使用如下指令:
-
进入其他文件夹:
cd 当前路径中你要进入的文件夹名
或者cd /相对根目录的地址
-
查看当前文件夹下的文件:
ls -l
3.3.我们晚上吃什么要干什么
3.3.1.安装各种包(已完成,可选读)
由于我们的权限只能延伸到我们的~
目录,而这个目录里目前空空如也,所以在愉快地搬砖之前,我们必须自己配置环境。
这里使用的包管理器是链接中推荐的miniconda3,安装方式也是照着链接中做的。
需要注意:
- 链接中没有提到:
按q跳过那个长长的信息……如果不想跳过,也可以按回车读下一行,但不要按的太快导致跳过了信息后面的激活确认选项,不然就要自己研究怎么激活…… - 目前的包都安装在名为pytorch的虚拟环境下,base里面空空如也,请进入pytorch环境中搬砖;
- 服务器上的包而非本地的包才是远程连接jupyter时用到的包,所以如果以后发现缺少什么包,请登录服务器并在pytorch环境里下载。
3.3.2.配置jupyter notebook(已完成,可选读)
在下载完jupyter notebook的包之后,就可以进入艰辛的配置环节了。此处大体参照教程:
本地访问远程Linux系统服务器的jupyter notebook - 杨同学的日常的文章 - 知乎
然而! 教程中还是有一些需要注意的地方,为了避免出错,请在动手实现之前阅读下一节:
3.3.3. 配置时的注意事项(如要配置,建议阅读)
3.3.3.1.生成密码
输入passwd() 并回车之后,又会要求输入密码。此时的输入和前面一样,仍然是不显示的,输入正确即可。
3.3.3.2.端口设置
首先需要确认,c.NotebookApp.port = xxxx中所指定的端口不是已被占用的端口。
(一般来说,使用了已被占用的端口是不能在本地打开jupyter登录界面的,但是! 如果这个被占用的端口,正好也被别人用来建立一个jupyter远程服务呢?……你就会像我这个傻子一样不停地输入登陆密码,然后不停地invalid credentials(密码错误 )……)
正确做法是:
首先在服务器本地输入$ jupyter notebook
指令,观察系统分配给你的端口是什么,然后记住它,按ctrl+c停止这个jupyter服务,再修改配置文件端口为这个可用端口;
3.3.3.3.在服务器启动jupyter
教程中用到的$ nohup jupyter notebook &
命令的意思是:
jupyter notebook
:运行jupyter notebook;nohup
:即no hang up,不挂起,此时当退出终端(断开与服务器的连接)后,jupyter服务仍然继续运行;&
:在后台运行,即此时可以继续在服务器进行其他操作。
3.3.3.4.检查当前运行的jupyter服务
由于上一条,要注意检查之前建立的后台jupyter服务是否关掉了,否则会出现端口占满,无法申请新端口而不能建立新服务的情况。
检查方法为:
输入指令$ jupyter notebook list
,展示出的:
Currently running servers: …
即为正在运行的服务,其中localhost:后面是所占用的端口号。(若除这一句外没有其他输出,则说明没有服务正在运行。)
3.3.3.4.关闭多余的jupyter服务
如果发现有未关闭且不在使用的服务,可以执行如下操作
(似乎每次只能关掉一个服务):
- 使用
lsof -n -i4TCP:端口号(通过list指令获得)
指令,得到PID; - 使用
kill -9 上一步得到的PID
指令,强制结束该服务。
这样,我们就可以快乐地用自己的浏览器搬砖啦~
3.3.4. 在本地 快乐搬砖! 连接服务器的jupyter
前面所有的辛苦都是为了这一步——能够在本地连接到服务器上的jupyter notebook!!!
服务器端配置好之后,本地的连接仅仅是傻瓜操作:
- 将你的电脑连上网络;
- 打开一个浏览器;
- 在网址栏输入
http://服务器ip地址:端口号
,然后回车; - 在password一栏中输入密码。
然后,你就看到了熟悉又可爱的界面!
这时候,你已经进到了之前在服务器设置好的jupyter根目录,并获得了崭新神器加持,可以开始更高效地搬砖了——
3.3.4.向服务器上传和下载文件
等等!jupyter是可以用了,但是根目录里面什么都没有啊?我们之前写好的代码怎么放进去呢?……这个时候,我们就要向服务器上传文件了。可以参考教程:
windows主机用scp命令向Linux服务器上传和下载文件
(这时候,你的网络要足够稳定,不然……)
.附录
.1.文件权限标识
在使用ls -l
命令查看文件列表时,在每一行的开头会出现有如rwxr-x---
的标识,这就是对该文件权限的标识。其含义如下:
- r代表可读,w代表可写,x代表可执行;
- 每三个为一组;
- 第一组代表文件所有者对这个文件的权限,第二组代表文件的组的权限,第三组代表所有其他用户的权限;
即,开头的例子rwxr-x--
表示:
- 文件所有者对这个文件可读可写可执行,文件组可读不可写可执行,其他用户不可读不可写不可执行。
.2.linux上vim的简单操作
.2.1打开vim编辑器
指令为:$ vim 文件路径(包括文件名)
注意
- 打开之后可能貌似什么都看不见,也许是因为你的powershell的背景颜色和注释过的代码的颜色太像了……
这时候就果断切换cmd吧
解决办法:
右键powershell的标题栏,选择属性->颜色->背景颜色,然后在下方的颜色选择栏中选择一个合适的颜色,那些代码就会奇迹般地出现啦……
.2.2进行编辑
按键盘I键,界面左下角出现--INSERT--
,表示处于输入状态。此时可以进行编辑。
注意
- 鼠标点击某位置后输入是不起效的,任何输入只从光标所在的位置进行;
- 在powershell中,ctrl+C复制文本之后,点击鼠标右键(而不是ctrl+V)从光标位置粘贴;cmd中可以右键,也可以ctrl+V。
.2.3保存并退出
按ESC键退出INSERT模式,此时--INSERT--
从界面左下角消失,取而代之的是键盘输入。
输入指令:x
,即可保存并退出vim编辑器。当然也可以用别的方式保存和退出,随你喜欢~
.3 一些奇奇怪怪的错误
.3.1 Connection reset by [ip] port 22
没错,你的电脑断网了……校园网出来挨打