用 tmux 同时启动和监控后端开发环境中的所有程序 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
191.75D
595.39D
V2EX    DevOps

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

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

    在大部分的 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     Solana     1333 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 17:00 PVG 01:00 LAX 09:00 JFK 12:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86