tmux可让长时任务脱离终端独立运行并保持状态,安装后通过new -s创建命名会话、ctrl-b分屏切换、d分离、attach重连实现持久化;意外断连可用attach -d强制接管。

Mac终端里运行的长时任务总因网络抖动或误关窗口而中断,用tmux可让会话脱离终端独立存活,窗格布局、命令状态、工作目录全部保留,重连即续。
安装与基础验证
先确认系统已装Homebrew:在终端输入brew --version,有输出则继续;无则按官方指引安装Homebrew后再执行下一步。
执行brew install tmux完成安装。安装后立即验证是否生效:tmux -V应返回类似tmux 3.4a的版本号。
若提示command not found: tmux,说明Homebrew的bin路径未加入$PATH——打开~/.zshrc,末尾追加export PATH="/opt/homebrew/bin:$PATH"(Apple Silicon)或export PATH="/usr/local/bin:$PATH"(Intel),然后运行source ~/.zshrc刷新。
创建命名会话并分窗格
执行tmux new -s web-dev,这将创建一个名为web-dev的新会话并自动进入。
此时处于tmux会话内,所有操作需先按前缀键Ctrl-b(按住Ctrl不放,再按b,松开),再按后续键——这是tmux默认前缀,不可跳过。
水平分屏:按Ctrl-b → "(英文双引号),上半屏运行npm run dev,下半屏留空备用。
垂直分屏:按Ctrl-b → %,右侧新建窗格用于git status或ls -l,左侧保持服务进程。
窗格间切换:按Ctrl-b → 方向键(上/下/左/右),光标会精准跳入相邻窗格;切勿用鼠标点选,tmux原生模式下鼠标切换可能失效。
分离与重连会话
方法一:主动分离
在任意窗格中按Ctrl-b → d,终端返回普通Shell,提示类似[detached from session web-dev]——此时会话仍在后台运行,所有窗格里的进程毫发无损。
方法二:意外断连后恢复
重新打开终端,执行tmux ls,确认web-dev: 1 windows (created ...)存在;再执行tmux attach -t web-dev即可回到原样界面。
【必须用-t指定名称】直接输tmux a可能连错最近会话,尤其当有多个会话时极易混淆。
方法三:强制接管(防卡死)
若之前连接异常未正常退出,再次attach会报错already attached。此时改用tmux attach -d -t web-dev,它会先踢掉旧连接,再建立新绑定,一步到位。
窗格内执行长期任务并保持活跃
在任一窗格中启动需要长时间运行的命令,例如tail -f /var/log/system.log或python3 server.py。
分离会话(Ctrl-b → d)后,该命令仍在后台持续执行;即使关闭整个Terminal应用,或SSH断开,它都不会终止。
重连后,不仅命令还在跑,连滚动日志的位置、Python服务的端口监听、当前工作目录、环境变量都和分离前完全一致——这就是会话持久化的本质。
注意:不要在窗格里直接按Ctrl-c中断关键任务,除非你明确要停掉它;误按会导致进程退出,且无法通过重连恢复。











