守护进程
【数据安全必读】
系统盘与数据盘均为本地 SSD,无冗余,单点故障可能导致数据永久丢失。
请务必将重要数据实时备份至「共享存储卷」或本地,共绩算力对本地盘损坏及数据丢失不承担任何责任。
立即开通共享存储卷,获得企业级冗余 + 跨区域同步,彻底告别数据丢失:
https://www.gongjiyun.com/docs/server/jojuw4rfdiepfxkchonctw0jnxe/yvawwrzvcivbypk8vihcgjrkn8c/
如果你通过 SSH 远程连接(或使用基于 SSH 的工具,如 XShell、PyCharm、VSCode 等)来运行程序,请注意在正式长时间运行时应以守护进程方式启动任务,以避免因网络波动或 SSH 断开导致程序意外终止,造成不必要的损失。
有多种方式可以实现程序在后台持久运行,例如使用 screen 或 tmux(如需安装可执行:apt-get update && apt-get install -y tmux),以下我们主要介绍两种常用方法。
一、使用 JupyterLab 终端执行程序
Section titled “一、使用 JupyterLab 终端执行程序”如果你在使用 JupyterLab,其内置终端会话具备较强的稳定性,即使本地网络中断或关闭电脑,只要 JupyterLab 服务未重启(通常情况下很少发生),其中运行的命令仍会持续执行。
- 如果你关闭了终端标签页,仍可以在左侧文件导航栏的“Running Terminals”部分找回原有会话。
- 重新打开终端后若未见输出,按回车键即可激活显示。
建议在使用 JupyterLab 长时间运行任务时,将程序日志重定向到文件中,防止因暂时断开连接而导致中间日志丢失。具体操作如下:
python xxx.py > train.log 2>&1
tail -f train.log二、使用 screen 工具管理会话
Section titled “二、使用 screen 工具管理会话”screen 是一款经典的终端复用工具,可以创建虚拟会话,即使在 SSH 断开后仍保持其中任务运行。
安装 screen:
Section titled “安装 screen:”apt-get update && apt-get install -y screen创建新会话:
Section titled “创建新会话:”直接输入 screen 命令,按回车后会出现一个新终端界面,此时在该终端中执行的命令将受 screen 会话保护。
注意:初次使用 screen 时,新终端界面可能只显示一个简单的 # 或 $ 提示符,并且输入常用命令(如 ping、python 等)会提示 command not found。这是因为默认启动的 Shell 环境配置不完整。
解决方法:此时只需手动输入 bash 并回车,即可启动一个功能完整的 Bash Shell。这个新 Shell 仍然完全处于 screen 会话的保护之下,您可以在此正常执行所有命令。为了后续使用方便,建议在 ~/.screenrc 配置文件中添加 shell -/bin/bash 来让 screen 默认直接启动 Bash。”
如果遇到中文字符显示乱码,可执行以下命令配置编码,并重新进入 screen:
echo "defencoding GBK" >> ~/.screenrcecho "encoding UTF-8 GBK" >> ~/.screenrc临时离开当前会话:
Section titled “临时离开当前会话:”在 screen 终端中按下组合键 Ctrl + a + d,即可“脱离”当前会话并返回原终端,屏幕会提示“detached”,表示该会话仍在后台运行。
重新接入原有会话:
Section titled “重新接入原有会话:”如需查看之前放在 screen 中运行的程序,可先查看现有会话列表:
screen -ls
然后使用如下命令恢复至指定会话:
screen -r <会话ID或名称>
你将回到原终端环境,并看到程序仍在持续执行。
退出并关闭 screen 会话:
Section titled “退出并关闭 screen 会话:”在 screen 终端内键入 Ctrl + d 即可结束当前会话。如仍有程序运行,请先使用 Ctrl + c 中断任务。
如果遇到中文显示问题,可在所有 screen 命令中加入 -U 参数以启用 UTF-8 编码支持,例如:
screen -U # 新建支持 Unicode 的会话screen -U -r xxx # 恢复某一会话通过以上方式,你可以更安全地在远程服务器上运行长时间任务,无需担心连接稳定性带来的中断问题。