VS Code 通过 SSH 连接服务器, SSH 会话断开导致服务器运行的程序中断

1. 避免程序中断

即使网络中断,你也可以通过以下方式让程序继续运行:

(1) 使用 tmuxscreen

tmuxscreen 是 Linux 下的终端复用工具,允许你在服务器上开启一个会话并保持运行状态,即使 SSH 会话断开,程序仍然继续运行。

步骤:

  1. 在服务器上安装 tmuxscreen
    sudo apt install tmux # Debian/Ubuntu sudo yum install tmux # CentOS/RHEL

  2. 启动一个 tmux 会话:
     
    tmux new -s mysession

  3. tmux 会话中运行你的程序。
  4. 断开 SSH 后,重新连接时可以恢复 tmux 会话:
     
    tmux attach -t mysession

(2) 使用 nohup

nohup(No Hangup)可以让程序在后台运行,防止它因终端断开而停止。

示例:

nohup python your_script.py > output.log 2>&1 &
  • &:表示程序在后台运行。
  • output.log:将输出重定向到日志文件。

2. 保持 VS Code SSH 会话稳定

如果想尽可能避免 SSH 会话断开,可以进行以下配置:

(1) 配置 SSH 的 ServerAliveInterval

在 SSH 配置文件中增加心跳机制,让客户端与服务器保持活跃连接:

编辑 SSH 配置文件:

vim ~/.ssh/config

添加以下内容:

Host * ServerAliveInterval 60 ServerAliveCountMax 3

  • ServerAliveInterval 60:每 60 秒发送一次心跳包。
  • ServerAliveCountMax 3:如果连续 3 次心跳失败(3 分钟),SSH 会断开连接。

(2) 配置服务器端 SSHD

在服务器上,修改 /etc/ssh/sshd_config 文件,增加客户端保持活跃配置:

ClientAliveInterval 60 ClientAliveCountMax 3

然后重启 SSH 服务:

sudo systemctl restart sshd

### 使用 VSCode 进行远程连接服务器并训练机器学习模型的操作指南 #### 1. 安装必要的扩展 为了实现通过 Visual Studio Code (VSCode) 远程连接服务器,需安装以下两个官方扩展: - **Remote - SSH**: 提供通过 SSH 协议连接到远程服务器的功能[^1]。 - **Python Extension Pack**: 支持 Python 开发环境的设置、调试以及 Jupyter Notebook 的运行。 可以通过 VSCode 扩展市场搜索上述名称进行安装。 --- #### 2. 配置本地 SSH 密钥 如果尚未配置过 SSH 密钥,则需要生成一对密钥用于安全登录。执行以下命令生成密钥对: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 将公钥复制至目标服务器上的 `~/.ssh/authorized_keys` 文件中,或者直接使用以下命令完成推送: ```bash ssh-copy-id user@server_address ``` 完成后可以尝试无密码登录服务器以验证配置是否成功: ```bash ssh user@server_address ``` --- #### 3. 设置 Remote - SSH 插件 打开 VSCode,在左侧活动栏找到“远程资源管理器”,点击后选择“SSH Targets”。随后按照提示输入服务器地址(如 `user@server_address`),插件会自动生成 `.ssh/config` 文件以便后续快速访问。 以下是典型的 `.ssh/config` 文件内容示例: ```plaintext Host my_server HostName server_address User user Port 22 IdentityFile ~/.ssh/id_rsa ``` 保存文件后即可在 VSCode 中通过主机名(此处为 `my_server`)轻松连接服务器。 --- #### 4. 创建虚拟环境与依赖包管理 建议在服务器上创建独立的 Conda 或虚拟环境来隔离项目所需的库版本。具体操作如下: ##### (1)激活或新建 Conda 环境 ```bash conda create --name ml_env python=3.8 conda activate ml_env ``` ##### (2)安装必要依赖项 根据需求安装 PyTorch/TensorFlow 及其他相关工具包。例如: ```bash pip install torch torchvision torchaudio pip install numpy matplotlib scikit-learn ``` 确保 GPU 加速支持已启用(可通过 NVIDIA CUDA 和 cuDNN 实现)。可运行以下代码片段确认设备可用性: ```python import torch print(torch.cuda.is_available()) # 应返回 True 表明 GPU 已就绪 ``` --- #### 5. 编写与调试脚本 利用 VSCode 内建的支持功能编写和调试 ML/DL 模型训练脚本。推荐采用模块化设计思路拆分不同部分逻辑,便于维护和复用。 下面是一个简单的 UNet 训练流程伪代码实例[^3]: ```python from unet_model import UNet from dataset_loader import MedicalImageDataset import torch.optim as optim import torch.nn as nn def train(model, dataloader, criterion, optimizer, epochs): model.train() for epoch in range(epochs): running_loss = 0.0 for i, data in enumerate(dataloader): inputs, labels = data['image'], data['mask'] outputs = model(inputs) loss = criterion(outputs, labels) optimizer.zero_grad() loss.backward() optimizer.step() running_loss += loss.item() print(f'Epoch {epoch}, Loss: {running_loss / len(dataloader)}') if __name__ == "__main__": device = 'cuda' if torch.cuda.is_available() else 'cpu' net = UNet().to(device) dataset = MedicalImageDataset(root_dir='data/') dataloader = DataLoader(dataset, batch_size=4, shuffle=True) criterion = nn.BCEWithLogitsLoss() optimizer = optim.Adam(net.parameters(), lr=1e-3) train(net, dataloader, criterion, optimizer, epochs=10) ``` --- #### 6. 自动化任务调度 当涉及长时间运行的任务时,考虑借助 Amazon SageMaker 等云服务简化管理和监控过程[^2]。SageMaker 不仅能动态分配 GPU 资源,还提供了日志记录、超参调优等功能加速研发进程。 此外也可以结合 Linux 命令行工具 cron 来安排定时作业;或者运用 nohup/nohub 方式后台启动程序防止因网络中断影响进度。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的蜗牛小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值