V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Livid
271.91D
572.26D
V2EX  ›  DevOps

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

  •  1
     
  •   Livid ·
    PRO
    · Jan 8, 2018 · 8198 views
    This topic created in 3043 days ago, the information mentioned may be changed or developed.

    在大部分的 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 replies    2018-01-08 23:57:53 +08:00
    siteshen
        1
    siteshen  
       Jan 8, 2018
    https://github.com/tmuxinator/tmuxinator 让这个更方便,可管理多个独立的 tmux session。

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

    https://github.com/pangliang/oh-my-tmux
    robinlovemaggie
        9
    robinlovemaggie  
       Jan 8, 2018   ❤️ 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  
       Jan 8, 2018
    iterm 和 tmux 的整合还是很开心的,基本是无缝的
    secsilm
        11
    secsilm  
       Jan 8, 2018 via Android
    坑还是有很多的
    h4lbhg1G
        12
    h4lbhg1G  
       Jan 8, 2018
    啊,这是站长么!

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

    原生的 send-keys 写起来太难读了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1823 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 16:17 · PVG 00:17 · LAX 09:17 · JFK 12:17
    ♥ Do have faith in what you're doing.