預(yù)發(fā)->..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行多屏批量shell命令發(fā)送

發(fā)布時(shí)間:2021-11-02 16:32:16 來源:億速云 閱讀:160 作者:柒染 欄目:系統(tǒng)運(yùn)維

這篇文章給大家介紹如何進(jìn)行多屏批量shell命令發(fā)送,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

web系統(tǒng)常見的開發(fā)流程:

日常->預(yù)發(fā)->線上

日常上通常只有一臺(tái)機(jī)器用來集成,所有人的開發(fā)分支會(huì)在這上面做合并部署。

當(dāng)一個(gè)應(yīng)用有很多人在上面開發(fā),并被很多應(yīng)用依賴時(shí),會(huì)有個(gè)問題。開發(fā)在日常環(huán)境UI上測(cè)試的成功都依賴這個(gè)應(yīng)用提供的服務(wù),但頻繁的發(fā)布造成短暫中斷會(huì)阻塞流程。

為了不讓單點(diǎn)集成機(jī)阻塞,考慮設(shè)置兩臺(tái)日常機(jī)器按正式分批發(fā)布形式保證日常環(huán)境每時(shí)每刻必會(huì)有一臺(tái)機(jī)器在提供服務(wù)。這樣的解決方式有個(gè)問題,原來debug看日志只需要關(guān)心一臺(tái)機(jī),登上去就好,現(xiàn)在變成了兩臺(tái)機(jī)。

app-|--> vm No.1 -> log      \--> vm No.2 -> log

這個(gè)問題還會(huì)繼續(xù)膨脹,如果是單元化應(yīng)用,單元也會(huì)有機(jī)器,按照以上方式又要乘2,  那么就變成了共4臺(tái),看到了嗎?這時(shí)就頭痛了,一條UI上測(cè)試的點(diǎn)擊,到底會(huì)落在哪臺(tái)機(jī)器呢?

app -  |-中心-| --> vm No.1 -> log        |      \--> vm No.2 -> log        |-單元-| --> vm No.3 -> log               \--> vm No.4 -> log

我們先想個(gè)簡(jiǎn)單的方式解決這個(gè)問題,tmux作為一款linux的多屏工具,最早見到這款工具還是在一位用HHKB的哥們那。

tmux基本概念

以下引用http://cenalulu.github.io/lin... 上的圖:

如何進(jìn)行多屏批量shell命令發(fā)送

session: 會(huì)話,我們可以把一組邏輯上上要做的事定義為一個(gè)會(huì)話,比如這次會(huì)話我們是要做一個(gè)應(yīng)用的日常開發(fā)。

window: 窗口,就是我們屏上看到的控制臺(tái)界面,可以跟iTerm2上一樣,有多個(gè)tab頁(yè),實(shí)際概念上也可以直接理解為tab頁(yè)。

panel:一個(gè)大窗口上,為了能直接看到多個(gè)登錄機(jī)器的情況,可以切分這個(gè)窗口,

如何進(jìn)行多屏批量shell命令發(fā)送

常用快捷鍵

ctrl+b, % 垂直切割屏幕(window)  ctrl+b, " 水平切割屏幕(window)

切換窗口

ctrl+b + 窗口號(hào)  ctrl+b + n 換到下一個(gè)窗口  ctrl+b + p 換到前一個(gè)窗口

切換panel

ctrl+b + 上下左右, 移動(dòng)到想要的panel上

調(diào)整panel大小

ctrl+b alt+ 左或右調(diào)整垂直panel大小  ctrl+b alt+ 上或下調(diào)整水平panel大小

下圖,將右邊的panle調(diào)大了

如何進(jìn)行多屏批量shell命令發(fā)送

翻頁(yè)

tmux不是一個(gè)原生GUI支持的,所以我們沒法用iterm2里面的鼠標(biāo)翻頁(yè)來進(jìn)行操作,翻頁(yè)操作更像vi里面的純鍵盤操作。

ctrl+b, [ 切換到復(fù)制模式。然后用ctrl+b后退, ctrl+f 前進(jìn) 來翻頁(yè)。

看多機(jī)器shell屏幕大招,發(fā)送命令到多個(gè)panel

ctrl+b, :setw synchronize-panes

這個(gè)是今天的重點(diǎn),前面說過了,如果需要登錄的日常機(jī)器擴(kuò)展到4臺(tái)怎么辦?

想象下,我們計(jì)劃連4臺(tái)機(jī),這個(gè)可以用切割window得到多個(gè)panel解決,而我們的目的是看日志,這個(gè)操作在每臺(tái)機(jī)是一模一樣的:

cd xxx/xxx/xxx  tail -f xxx.log

那么有沒有一種方式能把我們打的命令同步發(fā)送到所有的panel(所有登錄的機(jī)器上)呢?

當(dāng)然有,通過設(shè)置一個(gè)模式解決。

ctrl+b, :setw synchronize-panes

如何進(jìn)行多屏批量shell命令發(fā)送

設(shè)置成功后,在一個(gè)panel內(nèi)打字,會(huì)同步到所有panel上,如下,我只在一個(gè)panel里面輸入了test。

想解除怎么辦? 同樣的命令(synchronize-panes)再輸入一次就解除這種模式。

如何進(jìn)行多屏批量shell命令發(fā)送

tmux的一些缺省配置功能可以配置在文件里,路徑是:~/.tmux.conf

share一下我目前在用的:

set-option -g default-shell /bin/zsh setw -g mode-keys vi set-option -g default-command "reattach-to-user-namespace -l zsh" set-window-option -g mode-mouse on set -g mouse-select-pane on set -g mouse-resize-pane on set -g mouse-select-window on  # Setup 'v' to begin selection as in Vim bind-key -t vi-copy v begin-selection bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"  # Update default binding of `Enter` to also use copy-pipe unbind -t vi-copy Enter bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy"  # bind a reload key bind R source-file ~/.tmux.conf ; display-message "Config reloaded.."

關(guān)于如何進(jìn)行多屏批量shell命令發(fā)送就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI