tmux命令启动MySQL_tmux启动脚本
每次机器关闭后,再次打开tmux需要重复执行新建窗口,panel等操作,能否用脚本自动化?可以!
tmux的命令,既可以在tmux内执行(perfix :),也可以在命令行中作为tmux的参数执行,通过制定session,就可以在外部控制这个session的各种行为。后者就给了shell脚本控制tmux的机会!
首先我们先来了解一些脚本中需要用到的tmux命令:
新建对话
new-session [-AdDEP] [-c start-directory] [-F format] [-n window-name] [-s session-name] [-t target-session] [-x width] [-y height] [shell-command]
新建一个tmux会话。
[-s session-name]指定会话的名字。
-d让当前的终端打开这个tmux对话。在脚本中我们一般会带上这个参数,因为如果直接让当前终端打开这个tmux对话,脚本就不会继续执行了,也就无法定制这个tmux对话了。
[-n window-name]指定新建的会话的第一个窗口的名字。新建一个会话默认会新建一个窗口。
[shell-command]指定在新建的窗口中执行的shell命令
判断一个对话是否存在
has-session [-t target-session]
判断指定的tmux对话是否存在,如果存在返回码为0,不存在返回码为1
新建窗口
new-window [-adkP] [-c start-directory] [-F format] [-n window-name] [-t target-window] [shell-command]
新建一个window
[-t target-window]指定在哪个session新建window
[-n window-name]指定新window的名字
[shell-command]指定在新建的窗口中执行的shell命令
选择一个窗口
select-window [-lnpT] [-t target-window]
[-t target-window]切换到指定的window
新建一个panel
split-window [-bdhvP] [-c start-directory] [-l size | -p percentage] [-t target-pane] [shell-command] [-F format]
-h,-v 水平、垂直分割。这里我感觉tmux的分割和说的是相反的。。。因为-h会在中间画一条竖线。。。
[-t target-pane]指定需要划分的面板
发送按键到对应的panel
send-keys [-lMR] [-t target-pane] key ...
key可以指定快捷键,比如C-a,C-m等。
附加到一个session上
attach-session [-dEr] [-c working-directory] [-t target-session]
[-t target-session]打开对应的tmux对话
target-window和target-panel的命名规则
mysession:1指mysession对话的第一个窗口
mysession:name指mysession对话的叫name的窗口
mysession:1.0指mysession对话的第一个窗口的第0个面板。
tmux还支持很多灵活的命名方法来定位对应的窗口或者面板,具体的可以参考tmux的man文档。
注意:窗口和面板默认从0开始编码,但是可以通过设置来修改。我吧窗口设置为从1开始编码,这样切换窗口的时候比较方便。
关于执行shell命令
这里的shell-command虽然是在tmux中执行命令,但是和手动在tmux中执行是不一样的。
比如new-window 'vi /etc/passwd',tmux会这样执行:/bin/sh -c 'vi /etc/passwd'
比如$ tmux new-window vi /etc/passwd,tmux会这样执行:vi /etc/passwd
这两种情况,当你退出这个vim的时候,这个窗口也会结束!因为这个窗口运行的进程退出了,窗口也会退出。
那如果我只想在窗口的bash中执行命令作为子进程呢?
可以使用send-keys命令。
例子
了解了一些tmux命令后,就可以弄一个启动tmux的demo脚本了。
我的配置可以参考:tmux使用与配置
要求:启动tmux,第一个窗口打开家目录,窗口的名字为home。第二个窗口打开vi,名字为edit。默认显示第一个窗口。第三个窗口水平分割。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#!/bin/bash
#
# tumx启动脚本
# mushan 2016-05-20
# 兼容zsh
export DISABLE_AUTO_TITLE="true"
session="test"
tmux has-session -t $session
if [ $? = 0 ];then
tmux attach-session -t $session
exit
fi
tmux new-session -d -s $session -n home
tmux send-keys -t $session:1.0 'cd ~' C-m
tmux new-window -t $session:2 -n edit vi
tmux new-window -t $session:3
tmux split-window -t $session:3 -v
tmux select-window -t $session:1
tmux attach-session -t $session
为什么第一行有一个export DISABLE_AUTO_TITLE="true"呢?
这是因为我使用了zsh,new-window -n windown_name老是不能生效,新窗口的名字还是当前目录名。这是因为zsh会设置当前shell标题为当前目录名,bash就没有这个问题。
zsh的这个功能可以通过设置export DISABLE_AUTO_TITLE="true"来关闭。
还有,因为我使用了set -g base-index 1这个配置,所以窗口是从1开始编码的,这一点大家需要注意一下。
参考资料
tmux命令启动MySQL_tmux启动脚本相关推荐
- kafka安装、配置、启动、常用命令及shell启动脚本编写
config :kafka配置文件所在目录 server.properties 主要配置文件 zookeeper.properties kafka内置了zk,一般要将其替换掉 以下关于生产 ...
- jmeter远程启动命令_Jmeter命令行方式启动
在性能测试过程中,我们常常遇到这样的问题,使用Jmeter的GUI界面进行大并发量的性能测试时,界面容易卡死,无法继续进行性能测试.通过使用命令行方式启动jmeter是一个不错的方式.下面就简单介绍一 ...
- linux startx无效_LINUX startx命令-用来启动X Window
用来启动X Window 补充说明 startx命令 用来启动X Window,实际上启动X Window的程序为xinit. 语法 startx(参数) 参数 客户端及选项:X客户端及选项: 服务器 ...
- 第一章 Hadoop启动Shell启动脚本分析--基于hadoop-0.20.2-cdh3u1
我的新浪微博:http://weibo.com/freshairbrucewoo. 欢迎大家相互交流,共同提高技术. 第一章 Hadoop启动Shell启动脚本分析 第一节 start-all.sh脚 ...
- cm-14.1 Android系统启动过程分析(4)-init进程的启动、rc脚本解析、zygote启动、属性服务
声明 前阶段在项目中涉及到了Android系统定制任务,Android系统定制前提要知道Android系统是如何启动的. 本文参考了一些书籍的若干章节,比如<Android进阶解密-第2章-An ...
- [日更-2019.4.8、4.9、4.12、4.13] cm-14.1 Android系统启动过程分析(一)-init进程的启动、rc脚本解析、zygote启动、属性服务...
2019独角兽企业重金招聘Python工程师标准>>> 声明 前阶段在项目中涉及到了Android系统定制任务,Android系统定制前提要知道Android系统是如何启动的. 本文 ...
- 定时启动软件的脚本。同时也适用于定时打开游戏。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.脚本简介 二.脚本内容 三.脚本自启动 总结 一.脚本简介 每天上班族上班第一件事就是登录各种办公软件,今天給大家带来了 ...
- linux停止network服务命令是,Linux启动关闭重启网络服务的两种方式
注意:1.这三种方式主要用于以redhat为基础的发行版 2.如果还不知道运行级别是什么,那么最好先看看相关资料再实验 第一种方式:ln -s 建立启动软连接 在Linux中有7种运行级别(可在/et ...
- java 命令 一闪而过_tomcat启动不了一闪而过怎么办?tomcat一闪而过无法启动现象的解决方法...
tomcat启动一闪而过怎么办成为了许多刚接触tomcat开发环境工作者的一个大问题,许多用户朋友都不知道是因为什么问题导致出现这种情况,马上点击查看tomcat一闪而过无法启动解决方法来解决您现在出 ...
最新文章
- PTAM增强现实相关
- php读取部分文章显示不出来了,织梦使用PHP5.3环境时遇到部分文章出现”读取附加信息出错“的解决办法jz1...
- 超声波测距的数据应该如何显示到七针oled上_一文读懂京东方、TCL华星、三星显示和LGD之间的复杂关系...
- springboot启动太慢优化
- 混口饭吃,谈不上喜欢
- aspx中如何加入javascript
- python读配置文件转字典_python中读取配置文件的方式
- 获取浏览器高度和宽度
- 【ember zigbee】第三章:ug103-02-fundamentals-zigbee 学习笔记(中)
- 阿里百秀项目实战day1
- kali linux 2020.4 自带浏览器英文改中文
- Orientation模块管理设备的方向信息,包括alpha、beta、gamma三个方向信息,通过plus.orientation可获取设备方向管理对象
- Java线程等待唤醒机制(加深理解)
- 职高学计算机可以考的大学名单,职高可以考的大学有哪些
- 【FPGA知识点】八段共阳极数码管编码表
- 第四章:数据存储-csv文件处理-读取csv文件的两种方式
- SQL Developer的下载、安装和连接Oracle数据库
- linux密码配置文件详解,用户配置文件与密码配置文件
- [Java] [OpenGL ES3.2] 正多边形
- Arduino大师练成手册 -- 初识Arduino和开发环境搭建
热门文章
- python整数和浮点数相乘_python中整数除法和浮点数到整数转换之间的区别是什么原因?...
- stmt在java中的应用_JDBC技术基础总结转载,非原创
- 设置mysql整形_mysql 整型字段设计
- linux网络管理技术,linux网络管理 一
- java可变长字符串_具有可变长度的scala字符串插值
- android wifimanager权限,Android 6.0.1 - 权限问题= wifiManager.getScanResults()返回0
- php编写开机启动脚本,设置 msyql php-fpm 开机自动启动脚本
- 【Python金融量化 6- 100 】、六、蒙特卡洛预测微软股票
- php贝叶斯,php – 将单个概率与朴素贝叶斯垃圾邮件过滤相结合
- 非递减数列JAVA_C语言实现两个递减数列中寻找某一个数