日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

tmux命令启动MySQL_tmux启动脚本

發布時間:2024/10/5 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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启动脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。