screen与tmux:SSH断线不中断的后台任务管理
873 字
4 分钟
screen与tmux:SSH断线不中断的后台任务管理
生信分析最怕什么?不是代码报错——是跑了 18 小时的比对,SSH 断了。
screen 和 tmux 就是为解决这个问题而生的。它们在你的 SSH 会话之外创建一个独立的后台会话,即使你断网了、关电脑了,程序还在服务器上继续跑。下次登录一条命令就能回到之前的状态。
1. screen 快速上手——三分钟搞定
安装
apt install screen -y # Debian/Ubuntuyum install screen -y # CentOS核心操作(记住这6条就够了)
# 1. 创建新会话screen -S rnaseq # -S 起个名字,别用自动生成的随机ID
# 2. 在screen里跑程序bwa mem ref.fa sample.fastq.gz > output.sam# 程序跑起来了...
# 3. 暂时离开(detach):按 Ctrl+A 然后按 D# 屏幕会显示 [detached from 12345.rnaseq]
# 4. 查看所有会话screen -ls# 输出:# There is a screen on:# 12345.rnaseq (Detached)
# 5. 重新连接(reattach)screen -r rnaseq
# 6. 彻底关闭会话# 在screen里输入 exit 或按 Ctrl+D常用快捷键(都在 Ctrl+A 之后)
| 按键 | 功能 |
|---|---|
| Ctrl+A, D | 分离(最常用) |
| Ctrl+A, C | 创建新窗口 |
| Ctrl+A, N | 下一个窗口 |
| Ctrl+A, P | 上一个窗口 |
| Ctrl+A, “ | 窗口列表 |
| Ctrl+A, [ | 进入滚动模式(翻看历史输出) |
| Ctrl+A, K | 关闭当前窗口 |
实际使用场景
场景1:在服务器上跑一个需要8小时的比对
ssh user@serverscreen -S alignmentconda activate bioinfobwa mem -t 16 ref.fa sample.fastq.gz > sample.sam# Ctrl+A, D 分离# 关电脑回家# 第二天:ssh user@serverscreen -r alignment# 比对跑完了,可以看到所有输出场景2:一个screen里开多个窗口跑不同任务
screen -S project# 窗口0:跑比对bwa mem ...# Ctrl+A, C 创建新窗口# 窗口1:查看日志tail -f log.txt# Ctrl+A, C 再创建# 窗口2:编辑配置文件vim config.yaml# Ctrl+A, N/P 在窗口间切换2. tmux——screen 的现代替代品
tmux 功能更强、界面更现代、配置更灵活。如果用习惯了 screen 可以直接迁移到 tmux:
安装
apt install tmux -y核心操作
# 创建会话tmux new -s rnaseq
# 分离:Ctrl+B, D# 查看会话tmux ls# 重新连接tmux attach -t rnaseq# 关闭tmux kill-session -t rnaseqtmux 的默认前缀键是 Ctrl+B(screen 是 Ctrl+A)。如果你习惯用 Ctrl+A,可以在 ~/.tmux.conf 里改:
echo "set -g prefix C-a" >> ~/.tmux.confecho "unbind C-b" >> ~/.tmux.confecho "bind C-a send-prefix" >> ~/.tmux.conftmux source-file ~/.tmux.conftmux 相对 screen 的优势
| 特性 | screen | tmux |
|---|---|---|
| 窗口分割 | 需要打补丁 | 原生支持(Ctrl+B, %水平 / “垂直) |
| 会话共享 | 基础支持 | 完善支持 |
| 配置文件 | .screenrc | .tmux.conf |
| 状态栏 | 基础 | 高度可定制 |
tmux 的窗口分割特别实用: 左边 vim 写代码,右边跑命令,不用切窗口。
# tmux里Ctrl+B, % # 垂直分割(左右各一个窗格)Ctrl+B, " # 水平分割(上下各一个窗格)Ctrl+B, 方向键 # 切换窗格3. 踩坑
坑1:screen -r 报 “There is no screen to be resumed”
原因:你上次 detach 之后又在另一个终端 attach 并 close 了。
解决:screen -d -r rnaseq(强制 detach 另一端再 attach)
坑2:screen/tmux 里看不到颜色
在 screen 里:echo "term screen-256color" >> ~/.screenrc
在 tmux 里:echo "set -g default-terminal screen-256color" >> ~/.tmux.conf
坑3:screen 程序跑完了但会话还在
正常现象。可以用 screen -X -S rnaseq quit 强制关闭。
4. 选型建议
- 只跑基础后台任务 → screen(老牌稳定,所有服务器都有)
- 经常需要分屏、共享会话 → tmux(现代体验好)
本文于 2025-04-12 在 Debian 12 上实测。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
screen与tmux:SSH断线不中断的后台任务管理
https://fg.ink/posts/screen-tmux-background-tasks/ 相关文章 智能推荐
1
SSH远程连接进阶:免密登录、跳板机、端口转发
技术 SSH密钥免密登录、多主机配置管理、ProxyJump跳板穿越和端口转发的完整指南。
2
生信常见报错排查:20条错误与解决方案
技术 生信分析中20个常见报错的排查手册,按文件权限、内存溢出、软件依赖和流程逻辑分类,每条附错误原文与解决方案。
3
下载加速:axel/aria2多线程与断点续传
技术 axel与aria2多线程下载方案的详细对比,覆盖SRA/ENA/GEO等生信场景下的断点续传、限速与批量下载。
4
命令行效率工具:bat/fd/ripgrep/jq
技术 bat、fd、ripgrep和jq四个命令行效率工具的生信实战,覆盖文件浏览、内容搜索和JSON数据解析。
5
磁盘空间管理与清理:df/du/ncdu
技术 生信服务器磁盘空间的排查与清理方法,覆盖df/du/ncdu定位占用、大文件查找和缓存自动清理。
随机文章 随机推荐