脱离本地运行

方法一

直接输出日志到文件

  1. 正常连接服务器,不要运行项目
  2. 打开左下角terminal终端
  3. 在终端的左上方,local右方的+号旁点开下拉按钮
  4. 选择 Remote python xxxxxx(或者guest@服务器)

需要在终端执行代码或者自己修改运行设置

语法 nohup xxxxx log.txt 2>&1 &

1
2
3
4
5
6
7
8
9
10
11
12
CUDA_VISIBLE_DEVICES=0,1 添加nohup  执行代码  > log.txt 2>&1 & 将输出全部转入log.txt文件夹中(还是在服务器里)其中
CUDA_VISIBLE_DEVICES=0,1   ##是双卡训练(前提是代码支持)
nohup xxxx & ##可以让程序在后台继续运行,即使关闭终端,进程也不会被终止,最后需空格+&
> log.txt 2>&1   ##输出日志到


例如 CUDA_VISIBLE_DEVICES=0,1 python diffusion_inference.py --model_path ./weights/ID_Blau.pth --dir_path /home/dataset/GOPRO_Large_Reblur --strategy M10 O TURN
添加后
CUDA_VISIBLE_DEVICES=0,1 nohup python diffusion_inference.py --model_path ./weights/ID_Blau.pth --dir_path /home/dataset/GOPRO_Large_Reblur --strategy M10 O TURN > log.txt 2>&1 &

例:
CUDA_VISIBLE_DEVICES=0,1 nohup python diffusion_train.py > log.txt 2>&1 &

然后打开log.txt就可以看到所有的输出了

弊端

运行后只能通过终端查id杀进程才能终止

方法二

记录窗口到screen保活

  1. 正常连接服务器,不要运行项目
  2. 打开左下角terminal终端
  3. 在终端的左上方,local右方的+号旁点开下拉按钮
  4. 选择 Remote python xxxxxx(或者guest@服务器)
  5. 找到自身项目在服务器中的绝对路径(可在远程文件中copy absolute path) 例如/home/user/xxx/DBCNN 确保需要运行的文件在该路径下
  6. 在终端输入如下指令
    1
    2
    3
    4
    5
    6
    7
    8
    9
    cd /home/user/xxx/DBCNN  ## 进入项目
    conda activate xxx ##激活环境

    screen -S nameofscreen ## 创建窗口 nameofscreen为窗口名称 参数-S要大写 此时窗口理应刷新
    python train.py ##运行训练文件
    Ctrl + A,然后按 D ## 将 screen 会话放到后台并继续运行
    screen -ls ##查看当前screen的运行列表 通常是id.nameofscreen  
    screen -r nameofscreen ##打开名为nameofscreen 的窗口来查看输出
    screen -d nameofscreen ##当断线重连时候会显示已经被占用,使用该指令解除占用

查看

一般窗口刷新后便已经进入成功了,这时候可能什么都没有,

那是因为记录的东西在窗口的上面

** 此时screen窗口是不可上下滚动查看的需要输入如下指令**

Ctrl + A,然后松手,再按 esc ##进入编辑模式后可以上滚查看记录

1
screen -S <会话名称或ID> -X quit  ##退出对话

Ctrl + A,然后按 D 将 screen 会话放到后台并继续运行 这也是退出