Tmux 學習摘要5--結對編程

使用 tmux 進行結對編程的兩種方式:編程

  1. 建立一個新賬戶。在該新用戶下建立 tmux 開發環境,其餘組員和你共享這個新賬戶,並在其下工做。
  2. 使用 tmux 的 sockets,使得其餘人能鏈接到你的 tmux 會話。

這兩種方式本質上都有安全隱患:別人會看到你屏幕上的內容。所以,較好的方法是在 VPS 或虛擬機(VirtualBox + Vagrant)上搭建開發環境用於結對編程共享。安全

共享賬戶下的結對編程

這是一種最簡單的方法。先在一臺主機上開啓 SSH 訪問,而後在上面安裝和配置 tmux,而且建立一個 tmux 會話。其餘用戶用相同的賬戶 SSH 到該主機,而且關聯到該 tmux 會話。舉例來講,假設主機運行 Ubuntu,而且名稱爲 puzzles服務器

首先,建立一個用於共享的賬戶 tmuxsession

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 會話交互,可是每一個用戶本身建立的窗口,雖然其餘用戶能夠在狀態欄中看到窗口名,可是不能操做,從而實現了會話的共享和操做的隔離。

使用獨立賬戶和 Socket 進行結對編程

經過使用 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] 鏈接到一個分組會話

參考資源:

tmux: Productive Mouse-Free Development

相關文章
相關標籤/搜索