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

相关文章
相关标签/搜索