方法 1:使用 nohup 命令

nohup(No Hang Up)命令用于在关闭终端后仍然运行进程,适合在SSH断开后保持后台运行的任务。

  1. 命令格式

    nohup python your_script.py > output.log 2>&1 &
    
  2. 命令详解

    • nohup:不挂起命令。即使终端关闭,程序也会继续运行。
    • python your_script.py:运行你的Python脚本,将其替换为你实际的脚本名称,例如python train_model.py
    • > output.log:将程序的标准输出(通常是打印信息)重定向到output.log文件。这个文件中可以看到程序的执行信息。
    • 2>&1:将标准错误重定向到标准输出(output.log),确保输出和错误都记录到一个文件中,便于调试。
    • &:将任务放到后台运行,使终端可以继续接收其他命令,而不会被该任务占用。
  3. 查看任务运行状态

    • jobs:查看当前用户的所有后台任务。
    • ps aux | grep python:查看正在运行的Python进程,确认你的脚本是否在运行。
  4. 结束任务

    • 使用kill命令可以终止任务。例如,假设任务的ID为1234(可以通过ps aux查到),则可以用以下命令终止:
      kill 1234
      

方法 2:使用 screen

screen 是一个终端复用器,可以创建多个会话,并允许任务在后台运行,即使SSH断开也不会终止会话中的程序。

  1. 创建 screen 会话

    screen -S my_session
    
    • screen:启动一个新的screen会话。
    • -S my_session:为会话命名为my_session(可以自定义名称),便于之后恢复会话。
  2. screen 会话中运行脚本

    • screen会话内输入以下命令来运行Python脚本:
      python your_script.py
      
  3. 退出 screen 会话,但保持任务运行

    • 按下 Ctrl + A,然后按 D。这会使会话“脱离”(detach),但不会终止会话内的程序。
  4. 恢复 screen 会话

    • 重新连接到已脱离的会话:
      screen -r my_session
      
    • 这会重新打开my_session会话,允许你查看脚本的执行情况。
  5. 关闭会话

    • 当任务完成后,输入 exit 以退出并终止该 screen 会话。

方法 3:使用 tmux

tmuxscreen 类似,也是一个终端复用器,提供创建、管理多个终端会话的功能。相比screentmux提供更多的分屏操作,适合并行运行多个命令并保持任务运行。

  1. 创建 tmux 会话

    tmux new -s my_session
    
    • tmux new:创建一个新的 tmux 会话。
    • -s my_session:为会话命名为my_session,便于之后恢复。
  2. tmux 会话中运行脚本

    • tmux会话内输入以下命令运行Python脚本:
      python your_script.py
      
  3. 退出 tmux 会话但保持任务运行

    • 按下 Ctrl + B,然后按 D。这会将 tmux 会话“脱离”,但不会终止其中的程序。
  4. 恢复 tmux 会话

    • 使用以下命令重新连接到脱离的会话:
      tmux attach -t my_session
      
    • 这会重新打开名为my_session的会话,使你可以继续查看任务的执行状态。
  5. 关闭会话

    • 当任务完成后,输入 exit 以退出并关闭 tmux 会话。

方法 4:使用 & 符号后台运行

简单地将&放在命令的末尾,可以将任务放到后台运行,但这种方式在SSH断开后任务可能会终止,不适合长时间运行的任务。

  1. 命令格式

    python your_script.py &
    
  2. 命令详解

    • &:将任务放到后台,当前终端可以继续接受其他命令。
  3. 查看后台进程

    • 使用jobs命令查看所有后台任务,输出类似:
      [1]+  Running                 python your_script.py &
      
    • 使用ps aux | grep python查看正在运行的Python进程,确认你的任务是否在后台运行。
  4. 终止任务

    • 结束任务的方法是使用kill命令,可以根据ps aux查询到的进程ID来终止任务:
      kill 1234  # 将1234替换为实际的进程ID
      

总结

方法 优势 适用场景
nohup 轻量级,简单实用,支持日志输出 适合单个任务的后台运行
screen 支持多会话,便于后台管理 需要管理多个任务,或需要查看输出
tmux 支持分屏,功能强大 需要并行任务,或进行多窗口操作
& 最简单的后台运行方式 短期任务,不需要SSH断开保持运行

使用这些方法,可以在服务器上稳定地运行深度学习任务,并在需要时查看运行状态或调试。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐