## tmux介绍
tmux是一个优秀的终端复用软件,split窗口。可以在一个terminal下打开多个终端。
即使非正常掉线,也能保证当前的任务运行,这一点对于远程SSH访问特别有用,网络不好的情况下仍然能保证工作现场不丢失。SSH重新连接以后,就可以直接回到原来的工作环境,不但提高了工作效率,还降低了风险,增加了安全性。
常用[tmux配置文件 .tmux.conf][1]
## tmux的基本概念
Session:连接。是一组Window的集合。
Window:单个可见窗口。类似一个标签页。是一组Pane的组合。
Pane:窗格。可以理解为一个分屏。
三个元素在tmux的具体展现如下图,盗取自伯乐在线。
![](https://ws3.sinaimg.cn/large/006tNc79gy1fospuz6zrvj30j6092400.jpg)
## tmux的安装
一般采用网络直接安装的方式。
~~~
yum install tmux
sudo apt-get install tmux
~~~
## 信息查询
~~~
tmux list-keys 列出所有可以的快捷键和其运行的 tmux 命令
tmux list-commands 列出所有的 tmux 命令及其参数
tmux info 流出所有的 session, window, pane, 运行的进程号,等。
~~~
## 有关Session的命令和快捷键
session是一个特定的终端组合。
~~~
tmux 开启一个新的Session
tmux new -s session_name 创建一个叫做 session
tmux attach -t session_name 重新开启叫做 session
tmux switch -t session_name 转换到叫做 session
tmux list-sessions / tmux ls 列出现有的所有 session
tmux detach 离开当前开启的 session
tmux kill-server 关闭所有 session
tmux kill-session -t 0 关闭编号为0的session; 不加-t则删除全部session
tmux source .tmux.conf 使配置在所有session即时生效
快捷键 操作
prefix s 查看/切换Session
prefix d 离开Session
prefix $ 重命名当前Session
~~~
## 有关Window的命令和快捷键
session 中可以有不同的 window(但是同时只能看到一个 window)。
~~~
tmux new-window -n window-name 创建一个新的 window
tmux list-windows 列出window
tmux select-window -t 0-9 根据索引转到该 window
tmux rename-window 重命名当前 window
快捷键 操作
prefix c 创建Window
prefix & 关闭Window
prefix n 切换到下一个Window
prefix p 切换到上一个Window
prefix Window号 切换Window号
prefix w 查看/切换Window
~~~
## 有关Pane的快捷键
window 中可以有不同的 pane(可以把 window 分成不同的部分)。
~~~
tmux split-window 将 window 垂直划分为两个 pane
tmux split-window -h 将 window 水平划分为两个 pane
tmux swap-pane -[UDLR] 在指定的方向交换 pane
tmux select-pane -[UDLR] 在指定的方向选择下一个 pane
快捷键 操作
prefix % 垂直拆分一个Pane
prefix “ 水平拆分一个Pane
prefix q 显示Pane编号
prefix o 切换到下一个Pane
prefix z 切换Pane的全屏
prefix Alt + 方向 调整Pane的大小
~~~
## tmuxinator
tmuxinator是tmux的配置管理工具,解决了tmux服务器关机后session丢失问题。tmuxinator可以根据配置文件快速创建tmux的session。
### 安装
~~~
yum install ruby
gem install tmuxinator
~~~
### 基础设置
#### bash版
~~~
#!/usr/bin/env bash
_tmuxinator() {
COMPREPLY=()
local word
word="${COMP_WORDS[COMP_CWORD]}"
if [ "$COMP_CWORD" -eq 1 ]; then
local commands="$(compgen -W "$(tmuxinator commands)" -- "$word")"
local projects="$(compgen -W "$(tmuxinator completions start)" -- "$word")"
COMPREPLY=( $commands $projects )
elif [ "$COMP_CWORD" -eq 2 ]; then
local words
words=("${COMP_WORDS[@]}")
unset words[0]
unset words[$COMP_CWORD]
local completions
completions=$(tmuxinator completions "${words[@]}")
COMPREPLY=( $(compgen -W "$completions" -- "$word") )
fi
}
complete -F _tmuxinator tmuxinator mux
~~~
$HOME/.bashrc下增加下述内容:
~~~
source $HOME/.tmuxinator/.tmuxinator.bash
export EDITOR=/usr/bin/vim
~~~
source $HOME/.bashrc使其生效。
#### zsh版
将下述文本保存为$HOME/.tmuxinator/.tmuxinator.zsh,提供zsh的tab键提示功能
~~~
_tmuxinator() {
local commands projects
commands=(${(f)"$(tmuxinator commands zsh)"})
projects=(${(f)"$(tmuxinator completions start)"})
if (( CURRENT == 2 )); then
_describe -t commands "tmuxinator subcommands" commands
_describe -t projects "tmuxinator projects" projects
elif (( CURRENT == 3)); then
case $words[2] in
copy|debug|delete|open|start)
_arguments '*:projects:($projects)'
;;
esac
fi
return
}
~~~
$HOME/.zshrc下增加下述内容:
~~~
source $HOME/.tmuxinator/.tmuxinator.zsh
export EDITOR=/usr/bin/vim
~~~
source $HOME/.zshrc使其生效。
### 常用命令
Tmuxinator的一个工程(Project)对应tmux的一个session。
~~~
new简写为n,open简写为o,edit简写为e,list简写为l,copy简写为c,delete简写为d。
tmuxinator n ws # 创建工程ws
tmuxinator o ws # 打开工程ws的配置文件
tmuxinator e ws # 同上
tmuxinator c ws ws1 # 复制ws工程到ws1
tmuxinator d ws # 删除ws工程
tmuxinator l # 显示所有工程
tmuxinator ws # 开启ws工程
~~~
### 配置文件
#### 配置
~~~
name: ws # session名称
root: ~/ # 工程根目录,活动Pane会首先cd到此目录
windows:
- editor: # 第1个名为Editor的Window
layout: main-vertical # Pane的布局
panes: # 各个Pane
- vim # 第一个Pane运行vim命令
- guard # 第二个Pane运行guard命令
- server: bundle exec rails s # 第2个名为server的Window,运行命令为bundle
- logs: tail -f log/development.log # 第3个名为logs的Window,运行命令为tail
~~~
#### 布局方式layout
even-horizontal
![](https://ws1.sinaimg.cn/large/006tNc79gy1fotpqy8m5qj311y0lc0yt.jpg)
even-vertical
![](https://ws4.sinaimg.cn/large/006tNc79gy1fotprzoefoj311y0lcgp5.jpg)
main-horizontal
![](https://ws2.sinaimg.cn/large/006tNc79gy1fotpstnepgj311y0lc43f.jpg)
main-vertical
![](https://ws2.sinaimg.cn/large/006tNc79gy1fotptg43xtj311y0lc459.jpg)
tiled
![](https://ws1.sinaimg.cn/large/006tNc79gy1fotptwd6cjj311y0lc43w.jpg)
http://blog.csdn.net/ZCF1002797280/article/details/51859524
https://www.jianshu.com/p/fd3bbdba9dc9
[1]:https://gist.coding.net/u/echohiyang/a9f1032993c54ab0b5732fe85b97d6ab/raw/ebbbcc7d7f78437c5357fbc6cb45006eed52d370/.tmux.conf
- 目录
- 离散的内容
- IO模型
- 网卡绑定
- ssh
- 硬件测试
- 硬件
- limits
- 网络流量
- 硬盘IO
- 硬盘
- tmux
- 主机名和域名
- http_proxy
- iptables
- 内核参数
- 块设备和字符设备
- 内存
- 虚拟内存并非交换分区
- 网络延时
- 概念
- 多核压缩
- linux基础
- SSH协议
- 软件管理
- yum
- 制作本地源 yum系列
- 制作本地源 apt系列
- apt
- 在 Linux 中移除从源代码安装的程序的一种简单的方法
- 其他
- 源码编译和二进制安装后更改配置
- DNS
- bind
- 守护进程
- 特殊权限
- limit.conf配置
- 网络
- shell-ok
- 变量ok
- 数组ok
- 系统变量和环境变量
- 运算符和计算-ok
- 条件测试-ok
- 选择-ok
- shell循环-ok
- 输出echo和printf-ok
- 技巧-ok
- pre-web
- http协议
- web服务器
- Apache
- apache安装
- yum安装
- 二进制安装
- 编译安装
- httpd命令
- 运行 监控apache
- apache配置文件
- 常用配置
- MPM多处理模块
- 编译模块
- apache模块
- apache核心模块
- apache标准模块
- apache第三方模块
- 虚拟主机
- 1
- CGI-FastCGI-SSI
- 别名和重定向
- apache应用
- 301重定向
- apache防盗链
- http转化为https
- 访问时间段控制
- 控制访问目录
- 限制指定USER_AGENT
- 不同客户端访问不同网页
- apache黑名单
- httpd之禁止解析php
- 不记录css/js/img的访问日志
- 浏览器端静态缓存
- apache访问日志自动切割
- order-require
- 压缩传输
- httpd-ssl
- apache代理
- 正向代理
- 反向代理
- apache调优
- httpd压力测试工具ab
- CGI测试
- php
- php原理
- httpd和php的结合方式
- php yum安装之DSO模式
- php 编译安装之DSO模式
- php-fpm详解
- php yum安装之php-fpm模式
- php 编译安装之FastCGI模式
- php扩展之mysql
- php扩展之gd
- php扩展之pcntl
- php扩展之xcache
- php扩展之ZendGuardLoader
- phpMyAdmin
- wordpress
- 数据库-mysql
- 数据库原理
- mysql数据库原理
- mysql源码编译安装
- mysql二进制包安装
- mysql命令行工具
- 更改密码
- 数据库授权grant
- mysql日志
- 命令
- 常用
- 小命令大作为
- awk 报告生成器
- 网络命令
- 命令查找
- 压缩归档命令
- 文件管理
- 文件管理命令
- 文件查看命令
- 目录管理命令
- 用户管理命令
- 用户权限管理
- curl
- cheat
- chrony
- command
- crontab任务计划
- cut
- date
- dd
- df
- echo
- find
- grep
- hash
- iftop
- kill pkill killall
- ls
- lsmod和modprobe
- lsof
- man
- mkpasswd
- mount
- mtr
- netstat
- nmap
- nc
- NTP
- passwd
- rm
- rdate
- pv
- sar系统活动情况报告
- sed文本处理命令
- setup
- screen
- shutdown
- sort 命令
- sudo
- tcpdump
- top
- uniq
- wget
- who
- xargs
- 监控
- zabbix邮件报警
- Redis
- redis安装
- redis数据类型和操作方法
- redis持久化和配置
- redis主从配置
- php连接redis
- redis实现session共享
- 安装测试
- redis设置密码
- ELK日志分析系统
- elasticsearch
- logstash
- logstash插件
- filebeat日志收集
- kibana
- jenkins
- jenkins安装与配置
- 案例1
- 案例2
- 案例3
- 代码仓库之svn
- svn服务端配置
- 常用操作
- svn备份
- LB集群
- LVS负载均衡集群
- ipvsadm使用方法
- LVS调度方法
- NAT原理
- NAT实践
- DR原理
- DR实践
- TUN原理
- LVS持久连接
- HA集群
- HPC集群
- 共享存储
- ftp协议
- vsftpd
- NFS
- 网站架构发展
- 文件同步
- rsync基本用法
- rsync安装和使用_拉取模式
- lsyncd安装和用法
- zabbix
- zabbix服务端安装
- zabbix客户端安装
- zabbix编译安装
- zabbix监控tomcat
- zabbix监控mysql
- gitlab
- supervisor
- nsq
- ruby
- nodejs
- consul
- mesos
- zookeeper
- rwho
- 对象存储
- 工具
- rclone
- minio
- linux 性能调优
- CPU
- 第一部分 CPU
- 安全