
远程服务器怎么用才顺手
目录
背景
相信大家平时习惯用的都是Windows系统和MacOS系统居多,用Ubuntu这类的Linux系统的机会可能相对少一些。但是,绝大多数的服务器装的其实都是Linux系统。
就我亲身经历而言,对于Vivado这个软件,用Linux系统相较于用Windows系统做编译,在同样硬件条件下,测出来过高达5倍的速度提升。一个Windows下30个小时才能编译出来的超大规模程序,在Linux下可以做到6小时以内。另外,同等硬件下,Matlab的计算效率在Linux下也更高,尤其是并行计算时。
正因如此,后续课题组内安装服务器的时候,我都会建议优先安装Linux系统,虽然上手稍微难一点,但后续的效率提升所带来的收益,远大于前期的探索成本。
本文不涉及可视化界面,因为很多场景下用可视化界面连接服务并不稳定,体验也并不好,仅通过ssh
在很多计算场景下就能获得非常好的体验。另外,本文默认大家已经掌握通过命令行的ssh
命令进入服务器的方法。以下内容聚焦于:
如何方便地在自己电脑上对远程服务器上的文件进行访问、修改;
如何查看远程服务器的系统资源消耗;
如何通过创建会话,实现关闭终端而程序不中断。
通过这三点,希望能帮助大家扫清最开始使用Linux服务器的一些上手障碍。
👨💻用Vscode直接进行远程代码编写
为什么?
相信很多同学都是先在本地对程序进行编写、调试,然后再通过sftp对文件进行上传,在远处直接执行。但是这会带来几个问题:
- 本地写的代码会跟远程服务器上的代码有些许出入,比如执行次数、是否并行、是否采用GPU等,如果采用这个方法的话,每一次代码的改动都需要进行一次上传,效率降低;
- 整个流程需要多个软件配合使用,来回切换,效率降低;
- 如果中间过程还会产生log之类的文件,想要实时观测log内容,还需要反复同步,效率降低;
- 等等。
其实我们常用的vscode就完全可以做到“像本地文件一样”操作远程服务器上的代码,非常好用且高效。
怎么做?
- 先安装vscode,并在扩展市场中安装
Remote - SSH
插件
- 修改配置文件,依次点击左下角的蓝色按钮——连接到主机——配置SSH主机——选择用户名下的那个配置文件。
在配置文件下,添加如下内容:
Host myserver
HostName 192.168.x.x
User myname
IdentityFile ~/.ssh/id_rsa
这个本质上跟点击蓝色按钮——连接到主机之后输入ssh myname@192.168.x.x
是一样的效果,不过保存成配置文件之后,以后连接就不需要反复输入这串命令了。另外,IdentityFile
这一行不是必选,这个是进行密钥校验用的,具体可以去网上查一下“如何通过密钥连接服务器”,这一步可以跳过密码验证,如果没有这一行的话,每次连接的时候手动输入一下密码就行。
- 配置完成,连接服务器:再次点击蓝色按钮——连接到主机,此时能看见刚刚配置的服务器名"myserver",点击之后便进行连接。
- 连接之后选择打开文件夹,进入你想要的路径,接下来你的所有代码操作都可以在Vscode中完成了,跟本地使用的方法是一样的。
还有一些需要注意的地方:
- 远程服务器上的插件是需要重新安装一次的,点击这个云的按钮即可选择需要安装的插件
- 第一次连接速度会比较慢,因为有一系列东西vscode会自动进行安装,这个过程取决于网速
个人用例
我习惯了用vscode写程序,旁边放一个终端(vscode也自带终端,可以直接用),用SSH连接到远程服务器。用vscode修改程序并保存之后,直接通过终端在远程服务器上执行脚本查看输出。
比如我用matlab的时候,我会先通过matlab -nodesktop
进入无界面的matlab环境,接下来在里面执行脚本程序即可。
查看系统资源消耗
为什么?
我们登录服务器的时候,最常见的问题就是:现在这台机器忙不忙?能不能跑?跑的是什么?
常用的有 top
、htop
、glances
这些命令,其中 glances
还支持web远程查看,这样我就可以用浏览器直接接入了。
怎么做?
看你喜欢哪一款,top
是自带的,基本使用足够了,其他两款用命令行安装即可,具体看需求安装。注意,安装过程可能需要管理员权限,可以让管理员完成。安装命令分别如下:
sudo apt install htop
sudo apt install glances
其中,glances还支持浏览器直接访问,具体的安装过程问一下大模型即可,非常容易,如下:
基本界面如下。如果你喜欢可以安装,如果基本功能就够了,那就直接用系统自带的top
即可
用Byobu进行会话管理
为什么?
场景非常常见:你开了一个远程终端,跑了一个模型训练,结果突然网络断了——程序直接终止,几个小时白跑。
用 byobu
管理会话,就能避免这类跑到一半不敢退出的场景。
它允许你把当前终端“挂起来”,哪怕你断网了,任务照常运行,回来还能接着看输出。
怎么做?
安装:
sudo apt install byobu
启动:
byobu
常用操作(进入byobu之后):
功能 快捷键 创建新会话 Ctrl + a
→c
退出/删掉当前会话 输入 exit
,回车上一个/下一个会话 Ctrl + a
→p/n
detach 会话,即离开byobu环境,但是byobu在后台继续执行,可以随时重新进来 Ctrl + a
→d
重新连接 byobu attach
重命名当前会话为 newname
byobu rename-window newname
这里的意思是Ctrl + a
之后,Ctrl
键不要松,直接接下一个键
其他用法
启用状态栏显示会话名:
byobu-status --enable-session-name
如果想每一次连接SSH都能直接进入byobu环境的话,可以执行
byobu-enable
查看/选择后端(推荐使用
tmux
)byobu-select-backend
个人用例
我跑一个仿真,经常需要跑一整晚,甚至两三天。每次我都会先进入byobu环境,“创建一个新会话”,给这个会话改一个好记的名字(不然会话多了就忘了这个会话执行什么内容了)然后在里面运行训练脚本,再 Ctrl + a d
挂起来。哪怕回宿舍关电脑,第二天一早 ssh
上去 byobu attach
一下,模型还在继续跑,日志全都在。妈妈再也不会担心仿真中断了。以下是界面示例: