tmux分屏操作

1 篇文章 0 订阅
1 篇文章 0 订阅

产线如果需要批量操作,有时候需要一起来一起观察日志,比如同时tail日志,同时开启top等,这样用ansible就不太合适了,以前用screen 手动一个个开窗口,或者借助xshell自带的一些功能进行处理,之前一个同事推荐了tmux,网上教程一大堆,其实大致逻辑就是新建session->新建window->划分pane, 其中比较好的一篇教程是这个:[https://www.w3cschool.cn/tmux/tji9dozt.html],但实际使用中,老是记命令其实也记不全,所以根据需求用脚本会比较好,简单记录下经常使用的脚本。

#! /bin/bash

while getopts "m:u:p:f:s:" opt
do
    case $opt in
        m)mode=$OPTARG;; #登录模式,ssh/login脚本
        u)user=$OPTARG;; #登录用户
        p)port=$OPTARG;; #登录端口
        f)file=$OPTARG;; #登录服务器清单
        s)sync=$OPTARG;; #是否所有窗口同步
    esac
done

#argNum=$#

if [ -z $file ]
then
echo "file opts must have, please check"
exit 0
fi

if [ $mode == "ssh" ] 
then
if [ -z $user ] || [ -z $port ] 
then
echo "use ssh mode must have user and port opts"
else
CMD="ssh -l $user -p $port "
fi
fi

if [ $mode == "login" ]
then
CMD="python login.py "
fi

starttmux() {
    local j=0
    for host in `cat $file`
    do
        echo "$host"
        hosts[$j]=$host
        ((j++))
    done
    tmux new-window -a -n "newWindow" "$CMD{$host[0]}"
    unset hosts[0]:
    for i in "${hosts[@]}"; do
        tmux split-window -t "newWindow" -h "$CMD $i"
        tmux select-layout -t "newWindow" tiled
    done
    tmux select-pane -t 0
    if [ $sync == "true" ]
    then
        tmux set-window-option -t "newWindow" synchronize-panes on
        tmux set synchronize-panes on        
    fi
}

starttmux
效果

在这里插入图片描述

个人公众号, 分享一些日常开发,运维工作中的日常以及一些学习感悟,欢迎大家互相学习,交流

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值