0

    如果你也不会Vim,怎么优雅地在服务器上写代码&DEBUG?

    2023.04.15 | admin | 241次围观

    本文面向用户仅限于和我一样想直接在服务器上快乐写代码、Debug的朋友们

    关于写下本篇的源起:

    在平时的科研及课程中,需要经常借助服务器资源(如Linux环境、GPU、内存、存储空间等)执行一些庞大模型的程序.【别问,问就是炼丹师】在服务器上写代码这件事儿,大神们都会轻描淡写地跟你说 “不会还有人不会用Vim吧”,【对!当然很多人不会用Vim,也不太想用Vim】. 当然,在Linux上用Vim写代码的确专业,但是能简单、清爽、快速的编辑代码、调试代码、与服务器好好相处这件事儿如果能做到是不是会让程序员少掉几根头发?下面看看我按照时间顺序摸索到的几个方法【越往后,越好用】

    壹关于SSH,它能不能优雅一点?

    设置搞计算机的研究生们对于SSH再熟悉不过了,SSH(Secure Shell)专为远程登录会话和其他网络服务提供安全性的协议。连上服务器,最简单的是通过在cmd里直接输ssh命令连接【别告诉我你没安装SSH】。

    当然,这么黑黑白白的一片命令交互有时候的确不是很方便。如何更加舒服地和服务器交互呢?这里个人推荐三个非常不错的SSH终端工具:

    Ⅰ- Xshell:应该是最常用的终端工具了。很多优点,设计简洁、支持多标签模式、一键连接Xftp工具等等【趁着你还是学生身份,赶紧免费薅羊毛】

    Ⅱ - MobaXterm:这个软件估计听说过的人比较少,但这个工具我本人正在使用,真的是【相当相当相当全能】的一个软件。本地和服务器的文件交互、自带的编辑器、彩色日志、足够强大的免费版本… 总之,你可以试一下

    Ⅲ - Termius:如果说前面两个的界面做的好看,那和termius的界面比,根本不值得一提。这个软件的UI真的是直击我对简约高级清爽的界面的要求。另外它的牛逼之处在于跨平台,无论在Windows还是Android、MacOS你都可以通过termius连接【我真的看到过一个朋友吃饭的时候拿着手机看代码跑的怎么样了…】。还有别忘了把自己的Github账号通过学生认证搞个学生包,把你的termius账号关联Github账号,然后就可以免费使用专业版termius了!

    这几个SSH工具连接快速稳定,支持sftp/ftp文件传输,支持X11,美观,各有各的优势,有了它们,至少可以让你和服务器的相处更加和谐。

    贰命令行里可否开一个有图形界面的编辑器?

    可以!!!

    服务器上写代码这件事儿服务器文件夹映射到本地,用Vim的确专业。但是对于很多人来说的事实就是,Vim真的难用啊!【都是磕盐,何苦难为自己】服务器的命令行上如果能像本地一样开一个pycharm那是真的舒服……果然可以!

    其实非常简单,以pycharm为例,你只需要在官网下一个类似“pycharm-professional-2020.2.3.tar.gz”这样的包,然后

    tar -xvzf pycharm-professional-2020.2.3.tar.gz -C path_to_your_file” cd path_to_your_filecd pycharm-professional-2020.2.3/binsh pycharm.sh &

    就可以了!除了IDE,Editor也可以用相似的方法使用,比如vscode和sublime text都可以。当你回车了最后一行命令,软件的图形界面打开,你可以像在windows上那样完全用pycharm/vscode这些软件编辑服务器上的代码。

    但这种方法存在一个致命问题——软件的图形界面会非常非常卡!这显然是无法忍受的,根本无法正常码代码…【可能是服务器问题,不排除你那里一点也不卡】

    叁直接在WINDOWS上给本地VSCODE配个SSH?

    Linux服务器上远程启动vscode很卡,那本地的vscode肯定不卡…… 查了查发现……本地vscode还真能配置ssh!

    Step 1: 打开你的vscode,在左侧几个图标中找到【Extensions】或者你直接 (Ctrl+Shift+X) ,搜【remote development】服务器文件夹映射到本地,像下面这样。(不要下其他的,因为development已经都包含了)

    Step 2: 在本地的/Users/XXX/.ssh/目录下,以ssh-keygen命令生成密钥,并把生成后的id_rsa.pub文件传到服务器上的/home/XXX/.ssh/目录下并生成authorized keys,如下。

    Step 3:回到你的vscode,打开左侧Remote Explorer选择SSH Targets并点击设置按钮,在弹出的菜单中选择第一个配置文件即可,像这样

    C:\Uses\xxx\.ssh\config

    打开上面这个文件你要做的就是配置你的远程主机信息了,很简单:

    Host A_NAME  //给远程主机起一个名字    HostName xxx.xxx.xx.xxx //远程主机ip地址    User YourAcountName //用户名 Port 22 //端口,也可以不写IdentityFile "C:\Users\xxx\.ssh\id_rsa" //本地的id_rsa的路径

    然后,一起都好起来了!!!你会发现左侧的列表里多了一个远程主机的图标,右键Connect就ok了!当你Open folder/Openfiler的时候你就可以直接看到服务器上的文件了!之后的一切操作都完全像是在本地用vscode一样,丝滑!

    用着vscode的ssh实在是比用vim爽太多了。这个方法目前看来已经非常完美。但如果你的需求更大,vscode或许还是满足不了你。

    肆强大的PYCHARM,远程连接服务器?

    用vscode进行ssh的方法有一个缺点在于还是不够工程,当你需要Debug时,你一定希望IDE里面断点调试、单步调试的工具,以及你的程序跑出很多图片时Pycharm里面集中显示管理更加智慧,而不是弹出很多窗口。

    的确,Pycharm同样可以完成远程连接服务器的功能,并且更加强大!经过在网上查阅以及自己的实践,我总结出了最简单的最快速的配置方法,下面的步骤必须按顺序执行

    Step 1:首先最重要的一步,是在本地找一个地方建一个空文件夹用来作为服务器上文件的映射文件夹。建好之后用pycharm打开这个文件夹【可能会给你自动生成一个main.py,不重要】

    Step 2:在顶部菜单栏打开Files-Setting-Project:xxx-Project Interpter,右边有个可爱的设置按钮点击后选“Add”。按照下面几个步骤:

    首先选SSH Interpter,输入远程主机的ip以及你的用户名

    确定后下一步输入密码

    最后是关键的一步是,先选择自己需要的python解释器,然后在Sync folders这一项配置好本地和远程需要同步的文件夹,本地的文件夹路径不用修改。

    Step 3:其实配置过程已经结束了,按照上面的流程应该可以省去一个部署的步骤。至此,为了即时的同步远程和本地的代码,在菜单栏中的Tools-Deployment子菜单中,你可以选择Upload to,Download from, Compared with, Sync with四种选项来分别将文件同步至远程、将文件从远程同步、和远程映射文件夹对比、和远程文件同步。这里面还有一个选项为Browse Remote Host,你可以直接在pycharm里可视化地查看远程主机文件。

    Pycharm就是这么强大,我在使用多卡跑深度学习模型时利用pycharm依然可以使用Debug模式的断点调试功能来看模型的细节【并且每张卡上的所有变量都可以分别查看到】,这为我的工作进展大大提升了效率。

    OK,就是这样!

    就是这样了,本篇文章纯属在这学期学习过程中所得得一些比较实在的收获,之前也的确是没有很好地掌握这些基础技术。有了这些工具和手段,初入计算机磕盐门槛的萌新们应该可以少在这些繁琐工作上浪费很多时间。当然,和服务器“亲密”接触还有很多好的方法我还不知道,欢迎各路大神赐教!

    图文 | 张济远

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论