tmux会话管理工具Skill tmux

这是一个用于管理tmux会话的命令行工具,支持创建、监控、控制和终止后台交互式进程。主要功能包括数据库连接管理、日志实时跟踪、REPL交互操作等,适用于开发运维场景下的进程管理需求。关键词:tmux会话管理、后台进程控制、数据库连接工具、日志监控、REPL交互、CLI工具、DevOps自动化。

DevOps 0 次安装 0 次浏览 更新于 3/2/2026

名称: tmux 描述: 管理tmux会话以运行交互式后台进程 版本: 1.0.0 许可证: MIT 兼容性: opencode

概述

用于管理tmux会话的CLI工具,使代理能够运行和交互后台进程,如数据库连接(psql、mysql)、REPL、日志跟踪和其他交互式命令。

先决条件

  • 已安装 bun 运行时
  • 已安装 tmuxbrew install tmuxapt install tmux

命令

列出会话

列出所有活动的tmux会话。

bun .opencode/skill/tmux/list-sessions.js [选项]

选项:

  • --json - 以JSON格式输出

示例:

bun .opencode/skill/tmux/list-sessions.js
bun .opencode/skill/tmux/list-sessions.js --json

创建会话

创建一个新的tmux会话以运行后台进程。

bun .opencode/skill/tmux/create-session.js <名称> [选项]

参数:

  • 名称 - 会话名称(必需)

选项:

  • --command <命令> - 在会话中运行的初始命令
  • --workdir <路径> - 会话的工作目录
  • --window <名称> - 初始窗口的名称
  • --json - 以JSON格式输出

示例:

# 为psql创建会话
bun .opencode/skill/tmux/create-session.js 数据库会话 --command "psql -h localhost -U postgres mydb"

# 为跟踪日志创建会话
bun .opencode/skill/tmux/create-session.js 日志 --command "tail -f /var/log/app.log"

# 在特定目录中创建会话
bun .opencode/skill/tmux/create-session.js 开发 --workdir ~/projects/myapp

发送命令

向tmux会话发送命令(输入命令并按Enter键)。

bun .opencode/skill/tmux/send-command.js <会话> <命令> [选项]

参数:

  • 会话 - 会话名称(或 会话:窗口 或 会话:窗口.窗格)
  • 命令 - 要发送的命令

选项:

  • --no-enter - 发送按键而不按Enter键
  • --literal - 按字面意思发送按键(不进行特殊键解释)
  • --json - 以JSON格式输出

示例:

# 在psql会话中运行SQL查询
bun .opencode/skill/tmux/send-command.js 数据库会话 "SELECT * FROM users LIMIT 10;"

# 发送Ctrl+C以中断进程
bun .opencode/skill/tmux/send-command.js 日志 "C-c" --no-enter

# 输入文本而不执行
bun .opencode/skill/tmux/send-command.js 开发 "echo hello" --no-enter

捕获输出

捕获并读取tmux会话窗格的当前输出。

bun .opencode/skill/tmux/capture-output.js <会话> [选项]

参数:

  • 会话 - 会话名称(或 会话:窗口 或 会话:窗口.窗格)

选项:

  • --lines <n> - 要捕获的回滚行数(默认值:100)
  • --wait <模式> - 在捕获前等待输出匹配此模式
  • --timeout <毫秒> - --wait的超时时间(毫秒)(默认值:30000)
  • --json - 以JSON格式输出

示例:

# 捕获会话的最近输出
bun .opencode/skill/tmux/capture-output.js 数据库会话

# 捕获更多回滚历史
bun .opencode/skill/tmux/capture-output.js 日志 --lines 500

# 在捕获前等待特定提示符
bun .opencode/skill/tmux/capture-output.js 数据库会话 --wait "postgres=#" --timeout 5000

终止会话

终止tmux会话。

bun .opencode/skill/tmux/kill-session.js <名称> [选项]

参数:

  • 名称 - 要终止的会话名称

选项:

  • --json - 以JSON格式输出

示例:

bun .opencode/skill/tmux/kill-session.js 数据库会话

常见工作流程

数据库会话 (psql)

# 创建psql会话
bun .opencode/skill/tmux/create-session.js psql --command "psql -h localhost -U postgres mydb"

# 等待连接,然后运行查询
bun .opencode/skill/tmux/capture-output.js psql --wait "postgres=#"
bun .opencode/skill/tmux/send-command.js psql "SELECT COUNT(*) FROM users;"

# 捕获查询结果
bun .opencode/skill/tmux/capture-output.js psql --lines 50

# 完成后清理
bun .opencode/skill/tmux/kill-session.js psql

日志监控

# 开始跟踪日志
bun .opencode/skill/tmux/create-session.js 日志 --command "tail -f /var/log/app.log"

# 定期检查错误
bun .opencode/skill/tmux/capture-output.js 日志 --lines 200

# 停止监控
bun .opencode/skill/tmux/kill-session.js 日志

交互式REPL (Python、Node等)

# 启动Python REPL
bun .opencode/skill/tmux/create-session.js python --command "python3"

# 运行Python命令
bun .opencode/skill/tmux/send-command.js python "import pandas as pd"
bun .opencode/skill/tmux/send-command.js python "df = pd.read_csv('data.csv')"
bun .opencode/skill/tmux/send-command.js python "df.describe()"

# 捕获输出
bun .opencode/skill/tmux/capture-output.js python

输出行为

  • 命令输出直接显示给用户的终端
  • 不要重新总结或重新格式化输出 - 用户已经可以看到它
  • 捕获输出时,返回原始终端内容(可能包含ANSI代码)
  • 以编程方式解析时,使用--json获取结构化输出

注意事项

  • 会话名称应具有描述性且唯一(例如,psql-mydblogs-app
  • 目标格式:会话会话:窗口会话:窗口.窗格
  • 特殊按键:C-c (Ctrl+C)、C-d (Ctrl+D)、C-m (Enter)、C-l (清除)
  • 会话持续存在,直到显式终止或系统重启