You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将非tmux的SSH会话接入已有的tmux会话?

将已运行的任务转移到tmux会话的方法

方法一:使用reptyr工具(最简便)

  • 先安装reptyr:Debian/Ubuntu系统执行sudo apt install reptyr;CentOS/RHEL系统可通过sudo yum install reptyr或源码编译安装

  • 操作步骤:

    1. 找到要转移的进程ID(PID):用ps aux | grep 你的任务命令或pgrep 命令名,比如pgrep python就能定位Python任务的PID
    2. 在服务器上新建或进入tmux会话:执行tmux new -s mysession创建新会话,已有会话则用tmux attach -t mysession进入
    3. 在tmux会话里执行转移命令:reptyr <PID>,比如reptyr 12345
    4. 验证:原SSH窗口的任务会自动转移到tmux中,此时关闭原SSH连接,任务仍会在tmux后台持续运行
  • 注意:reptyr需要进程的操作权限,你自己启动的任务一般都能正常转移;部分带复杂终端交互的进程可能出现小问题,但编译、数据处理这类耗时任务基本都能稳定运行

方法二:手动转移(无需额外工具)

如果服务器无法安装第三方工具,可尝试这个方法:

  1. 先记录目标进程的PID,比如pid=12345
  2. 暂停进程:kill -STOP $pid
  3. 在tmux中启动和原环境一致的shell(比如bash)
  4. 在tmux的shell里执行:gdb -p $pid
  5. 在gdb提示符下依次输入以下命令:
    call setsid()
    call dup2(open("/dev/null", 0), 0)
    call dup2(open("/dev/null", 1), 1)
    call dup2(open("/dev/null", 2), 2)
    detach
    quit
    
  6. 恢复进程运行:kill -CONT $pid
  7. 此时进程已脱离原SSH终端,会在tmux会话的后台继续执行,关闭原窗口不会中断任务
  • 注意:这个方法操作较复杂,对交互式任务的支持有限,更适合非交互类的耗时任务

内容的提问来源于stack exchange,提问作者Sunny An

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:15:47