V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
V2EX  ›  DevOps

用 tmux 同时启动和监控后端开发环境中的所有程序

  •  1
     
  •   Livid · 2018-01-08 07:02:22 +08:00 · 7296 次点击
    这是一个创建于 2272 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在大部分的 web app 开发环境中,通常会需要启动不只一个程序。比如一个用 Tornado 或者 Flask 写的的 Python web app,通常还需要启动处理异步操作的 rq 或 celery。

    在生产环境中,这些程序可能会使用一个类似 supervisord 这样的进程管理器。但是在开发环境中,你可能会需要查看这些程序输出到 console 中的输出。

    我们可以创建一个这样的 bash 脚本,用 tmux 来同时启动我们需要的所有程序,并分屏显示:

    #!/bin/sh
    tmux new-session -d 'python app.py'
    tmux split-window -h 'rqworker'
    tmux -2 attach-session -d
    

    在上面的例子中,python app.py 是启动之后在左侧分屏显示的程序,rqworker 在右侧。如果把第二行中的 -h 换成 -v 那么将会使用水平方式分屏显示。

    如果你需要切换分屏窗口中的焦点,那么使用快捷键 Ctrl-B 然后加方向键即可。

    15 条回复    2018-01-08 23:57:53 +08:00
    siteshen
        1
    siteshen  
       2018-01-08 08:01:27 +08:00
    https://github.com/tmuxinator/tmuxinator 让这个更方便,可管理多个独立的 tmux session。

    tmuxinator project1-dev
    tmuxinator project2-stage
    tmuxinator project3-prod
    XiaoFaye
        2
    XiaoFaye  
       2018-01-08 08:04:20 +08:00 via Android
    那谁来监控 tmux?
    mywaiting
        3
    mywaiting  
       2018-01-08 08:41:05 +08:00
    开发机挂着四个 24 寸的显示器,每个显示器开四个 putty 窗口........
    Keyes
        4
    Keyes  
       2018-01-08 08:54:55 +08:00 via Android
    @mywaiting tmux 上阵的好机会,直接把一个终端切 4 块
    hnyoumfk
        5
    hnyoumfk  
       2018-01-08 09:38:26 +08:00   ❤️ 1
    可以用[Tmuxp]( https://github.com/tony/tmuxp)来管理 tmux,定义脚本更方便
    lululau
        6
    lululau  
       2018-01-08 10:11:57 +08:00
    我用 tmux-resurrect
    alexsunxl
        7
    alexsunxl  
       2018-01-08 10:33:32 +08:00
    这个是保存 tmux session 的意思吗
    tmux 有插件可以 save load session
    pangliang
        8
    pangliang  
       2018-01-08 11:07:51 +08:00   ❤️ 1
    有 oh-my-zsh , 同样 也有 oh-my-tmux

    https://github.com/pangliang/oh-my-tmux
    robinlovemaggie
        9
    robinlovemaggie  
       2018-01-08 11:20:15 +08:00   ❤️ 1


    tmux_init()
    {
    tmux new-session -s "kumu" -d -n "local" # 开启一个会话
    tmux new-window -n "other" # 开启一个窗口
    tmux split-window -h # 开启一个竖屏
    tmux split-window -v "top" # 开启一个横屏,并执行 top 命令
    tmux -2 attach-session -d # tmux -2 强制启用 256color,连接已开启的 tmux
    }

    # 判断是否已有开启的 tmux 会话,没有则开启
    if which tmux 2>&1 >/dev/null; then
    test -z "$TMUX" && (tmux attach || tmux_init)
    fi
    lqf96
        10
    lqf96  
       2018-01-08 12:25:05 +08:00
    iterm 和 tmux 的整合还是很开心的,基本是无缝的
    secsilm
        11
    secsilm  
       2018-01-08 13:04:09 +08:00 via Android
    坑还是有很多的
    h4lbhg1G
        12
    h4lbhg1G  
       2018-01-08 13:41:57 +08:00
    啊,这是站长么!

    如果是 Windows 推荐使用我的 CommandTrayHost,不仅支持显示隐藏日志,还支持秒级的 crontab 自动重启和检测是否退出。
    myself659
        13
    myself659  
       2018-01-08 13:44:30 +08:00
    tmux 我还是小白一个
    scriptB0y
        14
    scriptB0y  
       2018-01-08 14:19:13 +08:00
    https://github.com/tony/tmuxp

    原生的 send-keys 写起来太难读了
    Andrman
        15
    Andrman  
       2018-01-08 23:57:53 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2570 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:39 · PVG 23:39 · LAX 08:39 · JFK 11:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.