当前位置:首页>Linux>代码学习 | Linux | tmux 管理长时任务

代码学习 | Linux | tmux 管理长时任务

  • 2026-10-11 05:39:14
代码学习 | Linux | tmux 管理长时任务

在服务器上跑长时任务,最怕网络一断、终端一关,程序就没了。nohup 能挂后台,但多个任务难管理,状态看不见摸不着。tmux 给你在服务器上开一个永远不断的工作空间:多会话、多窗口、多面板,断线重连秒回到原来的界面,是跑长时分析的标配。这一讲把 tmux 的会话、窗口、面板操作一次理清,所有非交互式命令均可直接在终端测试,快捷键附在文末。


概念速览

tmux 用会话(session)管理工作上下文,每个会话可以有多个窗口(window),每个窗口可以分成多个面板(pane)。关键是 tmux 在后台独立运行——SSH 断线后会话保持不变,重新连接后 tmux attach 秒回原状。

核心命令速查

下面按功能分组,复制即可用;有副作用的命令(如 --delete、conda install)放最后一章:

#!/bin/bash# tmux 速查 -- 会话/窗口/面板管理(非交互式命令均可直接执行)SES=l11_work# ---- 会话操作 ----tmux new-session -d -s $SES -x 220 -y 50    # 创建后台会话tmux list-sessions                            # 列出全部会话tmux has-session -t $SES && echo"会话存在" || echo"会话不存在"tmux rename-session -t $SES"analysis"# 重命名会话# ---- 窗口操作 ----tmux new-window -t analysis -n "shell"# 新建并命名窗口tmux new-window -t analysis -n "monitor"# 再建一个窗口tmux list-windows -t analysis                 # 列出所有窗口tmux rename-window -t analysis:0 "main"# 重命名窗口# ---- 面板分屏 ----tmux split-window -h -t analysis:0            # 水平分屏tmux split-window -v -t analysis:0.0          # 垂直再分tmux list-panes -t analysis:0                 # 列出面板# ---- 向面板发送命令 ----tmux send-keys -t analysis:0.0 "echo 'tmux ok' > /tmp/tmux_l11.txt" Entersleep 0.5cat /tmp/tmux_l11.txt# ---- 获取信息 ----tmux display-message -p -t analysis "#{session_name}/#{window_index}/#{pane_index}"tmux show-options -g history-limit 2>/dev/null | head -1# ---- 全局选项 ----tmux set-option -g history-limit 50000tmux set-option -g mouse ontmux set-option -g status-bg colour235# ---- 清理 ----tmux kill-pane -t analysis:0.2 2>/dev/null || truetmux kill-window -t analysis:2 2>/dev/null || truetmux kill-session -t analysisrm -f /tmp/tmux_l11.txtecho"tmux 演示完成"# ---- 快捷键(在 tmux 内按)----# Ctrl+B D       脱离会话(保持运行)# Ctrl+B C       新建窗口# Ctrl+B N/P     下/上一窗口# Ctrl+B %       水平分屏# Ctrl+B "       垂直分屏# Ctrl+B 方向键  切换面板# Ctrl+B Z       面板最大化/还原# Ctrl+B [       进入复制模式(q 退出)

示例的输出日志

用测试数据实跑一遍,输出如下(路径已脱敏):

l11_autotest_150517: 1 windows (created Fri Jun 26 14:26:07 2026)tmux_oktmux 测试通过

以上为真实终端输出,可直接对照验证命令效果。

避坑指南

  • no server running on /tmp/... → tmux 未启动或 socket 路径变化,重开一个
  • 分屏太小报 terminal too small → 调大 SSH 终端窗口再分屏
  • 中文乱码 → tmux 配置 set -g utf8 on(老版本),新版默认 UTF-8
  • 关闭终端后任务没了 → 是退出了 tmux,要 Ctrl+B D 脱离而非 exit

📦 完整代码 + 测试数据下载
百度网盘链接:https://pan.baidu.com/s/1JKSMmGTFJ83mOZU3fRnQwg?pwd=l11c
提取码:l11c(代码已实测可直接运行,建议保存到自己网盘)

最新文章

随机文章