使用 tmux 進行結對編程的兩種方式:編程
這兩種方式本質上都有安全隱患:別人會看到你屏幕上的內容。所以,較好的方法是在 VPS 或虛擬機(VirtualBox + Vagrant)上搭建開發環境用於結對編程共享。安全
這是一種最簡單的方法。先在一臺主機上開啓 SSH 訪問,而後在上面安裝和配置 tmux,而且建立一個 tmux 會話。其餘用戶用相同的賬戶 SSH 到該主機,而且關聯到該 tmux 會話。舉例來講,假設主機運行 Ubuntu,而且名稱爲 puzzles。服務器
首先,建立一個用於共享的賬戶 tmux :session
tmux@puzzles$ adduser tmux
爲使其餘用戶能經過 SSH 無縫地登陸主機,在主機的 tmux 賬戶下創建 authorized_keys 文件:ssh
tmux@puzzles$ su tmux tmux@puzzles$ mkdir ~/.ssh tmux@puzzles$ touch ~/.ssh/authorized_keys tmux@puzzles$ chmod 700 ~/.ssh tmux@puzzles$ chmod 600 ~/.ssh/authorized_keys
而後,在客戶機上,將本身的 id_rsa.pub 文件傳送給主機:socket
$ scp -p id_rsa.pub tmux@puzzles.local
再回到主機,將開發人員的 key 添加到 authorized_keys 文件:工具
tmux@puzzles$ cat id_rsa.pub >> ~/.ssh/authorized_keys
重複這個流程,直到全部結對編程人員的 key 都已添加完畢。code
在主機上設置 tmux 開發環境,而後建立一個會話:htm
tmux@puzzles$ tmux new-session -s Pairing
而後團隊中的任何一個成員均可以登陸到主機,而且關聯到該會話:資源
tmux@puzzles$ tmux attach -t Pairing
以後,團隊就能在該項目上協做了。而且團隊成員能夠隨時脫離這個會話,而後能夠再關聯回來。
當兩人同時關聯到相同的會話時,他們會看到相同的內容,而且是和相同的窗口交互。可是容許互不干擾地在會話中操做有時會頗有用。該功能可用 分組會話 實現。以例子說明:
先在遠程主機上建立一個新的會話 groupedsession :
tmux@puzzles$ tmux new-session -s groupedsession
以後,其它用戶不是關聯該會話,而是在建立他本身的會話時將該會話做爲一個目標會話,從而 "加入" 到 groupedsession 會話:
tmux@puzzles$ tmux new-session -t groupedsession -s mysession
當第二個會話加載後,此時每一個用戶都在與 groupedsession 會話交互,可是每一個用戶本身建立的窗口,雖然其餘用戶能夠在狀態欄中看到窗口名,可是不能操做,從而實現了會話的共享和操做的隔離。
經過使用 tmux 的 socket 功能,能夠建立多人可鏈接的會話。
首先,爲該會話建立兩個新賬戶,ted 和 barney:
tmux@puzzles$ sudo adduser ted tmux@puzzles$ sudo adduser barney
而後,建立 "tmux" 組,而且建立 /var/tmux 目錄用於保存共享會話:
tmux@puzzles$ sudo addgroup tmux tmux@puzzles$ sudo mkdir /var/tmux tmux@puzzles$ sudo chgrp tmux /var/tmux
設置目錄權限使得 tmux 組中的成員都能對其進行讀寫:
tmux@puzzles$ sudo chmod g+ws /var/tmux
將賬戶添加到 tmux 組:
tmux@puzzles$ sudo usermod -aG tmux ted tmux@puzzles$ sudo usermod -aG tmux barney
以前用 new-session 命令建立的會話使用了默認的 socket 地址,它們都沒法訪問到。如今 ted 用 -S
開關建立一個會話:
ted@puzzles$ tmux -S /var/tmux/pairing
在另外一個終端中,以 barney 賬戶登陸,而後用 -S
開關來關聯這個 socket 型的會話:
barney@puzzles$ tmux -S /var/tmux/pairing attach
這樣, barney 和 ted 就關聯到了同一個會話,而且能夠看到相同的內容。
這種方式中,會話加載時使用的是建立該會話的賬戶下的 .tmux.conf 文件。
使用這些方法,能夠在生產環境下的服務器上開啓一個會話:開啓監測工具等,而後脫離關聯,以後再返回關聯。或者能夠在 VPS 上建立一個會話,並設置 好開發環境,以後,能夠在任何地方,任何設備上返回關聯這個會話,繼續以前的工做。
命令 | 描述 |
---|---|
tmux -S [socket] | 使用 socket 建立一個會話 |
tmux -S [socket] attach | 使用 socket 關聯一個會話 |
tmux new-session -t [existing-session] -s [newssion] | 鏈接到一個分組會話 |
參考資源: