在pycharm通过SSH远程连接服务器时,如何避免断网或者关闭pycharm影响代码运行

因为实验室中我这个工位的网络有点连接不稳定,在跑实验的时候会出现程序中断的情况,而我在控制台终端还看不出来。

注:首先可以通过以下指令判断是否GPU在运行,从而判断程序是否已经中断。

nvidia-smi 

开始配置Ubuntu系统中的screen指令,用来避免上面程序中断的问题。

1、在成功连接到服务器并登陆后,在命令行中切换到自己的环境,如我的环境是anaconda创建的名为yzk的环境,则执行

conda activate yzk

2、安装screen(如果不知道有没有的话可以先进行第三步,看是否已经有了screen)

conda install screen

3、在激活环境和安装screen成功后,我们可以使用screen指令创建一个新窗口(需要给这个窗口起一个名字)。假设我给创建的窗口起的名字是TRAIN2024

screen -S TRAIN2024

执行这段指令后,屏幕应该会重新开启一个新的终端页面,此后,可以在这个页面中重新进入我们的环境,并且cd至指定目录后执行项目,例如执行train.py文件

python train.py

4、此后,服务器则开始跑这个程序,此时我们可以断开SSH(关闭这个终端界面),断开后,服务器会在本地继续跑这个程序

假如我们想恢复这个screen,看看程序跑没跑完,则只需要重新SSH连接到这个服务器,登陆同一个账号后,在终端输入:

screen -ls

然后会出现下面类似的结果:

There is a screen on:
        1423013.TRAIN2024       (Attached)
1 Socket in /tmp/uscreens/S-zikang.

5、此时,若我们想切到这个screen中,只需要执行下面的指令,就看到恢复后的界面了

screen -r 1423013

6、如果想杀掉这个screen终端可以执行

kill 1423013

另外,linux在进入screen模式下之后,发现是无法在终端使用鼠标滚轮进行上下翻页拉动的,无法查看上面的终端输出内容了

解决办法:
进入回滚模式(可以操作鼠标滚轮上下翻页):

先按Ctrl+a键,然后释放,然后再按[键即可进入翻页模式。

但是这个状态的时候,终端的输出内容会静止,不再现实真实的新输出值。我们可以切换回之前模式:

Ctrl+c

参考文献:

SSH远程连接服务器时,避免因断网导致程序终端执行,可使用screen指令_ssh 网络波动 会断开吗-CSDN博客

ssh连接服务器中断,如何让命令继续在服务器执行 | Darren

screen模式无法翻页,鼠标无法滚动问题_screen中鼠标滚轮不可用-CSDN博客

### PyCharm 中配置远程服务器程序后台运行 在 PyCharm Professional 版本中,可以通过特定设置让程序远程服务器上作为守护进程或服务持续运行。这不仅适用于长间执行的任务,也适合部署应用。 #### 配置项目解释器 为了使应用程序能够在远程服务器上运行,需先配置好项目的 Python 解释器为远程服务器上的解释器[^1]。此过程涉及通过 SSH 协议连接到目标机器,并指定该环境中可用的 Python 可执行文件的位置。 #### 设置远程调试会话 当希望启动的应用能在断开 IDE 连接之后继续工作,应该考虑利用 nohup 或者 screen 工具来保持命令行作业存活。具体做法是在提交任务给 shell 前加上 `nohup` 关键字或者进入一个新的 screen 会话内执行脚本: ```bash # 使用 nohup 方式 nohup python /path/to/your_script.py &> output.log & ``` 对于更复杂的场景,建议采用 tmux 或 screen 创建持久化的终端窗口,在其中启动 Python 应用: ```bash # 使用 screen 方式 screen -S mysessionname python /path/to/your_script.py Ctrl+A D # Detach from the session but keep it running. ``` 以上两种方式都可以确保即使关闭了本地计算机与远程主机之间的连接Python 脚本仍然可以在后台正常运作。 #### 自动化部署流程 为了让整个发布更加自动化,还可以编写 Shell Script 来封装上述逻辑,并将其集成进 PyCharm 的 Run Configuration 当中。这样每次触发构建动作都会自动完成所有必要的准备工作,包括但不限于上传最新源码、安装依赖包以及最终激活后台模式下的应用程序实例。 另外值得注意的是,如果计划长期维持某些 Web API 类型的服务在线状态,可能还需要研究像 systemd service units 这样的 Linux 系统级解决方案,以便更好地管理和监控这些长期运行的服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值