2013年9月26日木曜日

別々の Byobu 画面を使う

最近の Ubuntu では ssh でサーバーに接続して Byobu を実行してる状態で、別の ssh 接続で Byobu を実行すると、同じ画面を個々の ssh で実行された Byobu で共有することになります。
(片方の Byobu 画面での操作がもう一方の Byoubu 画面に全く同じように表示されます。)

が、別々の Byobu では画面を共有せずに別々のものを表示させたい場合にどうしたら良いのか調べてみました。以下は Byobu で tmux をラップしている場合です。

Byobu コマンドは実行時のオプションをそのまま tmux に渡しているみたいなので、tmux の man を調べると
$ man tmux
    ... snip ...
    -L socket-name
        tmux stores the server socket in a directory under /tmp (or TMPDIR if set); the default socket
        is named default.  This option allows a different socket name to be specified, allowing several
        independent tmux servers to be run.  Unlike -S a full path is not necessary: the sockets are all
        created in the same directory.

        If the socket is accidentally removed, the SIGUSR1 signal may be sent to the tmux server process
        to recreate it.
    ... snip ...
というのがありました。

/tmp ディレクトリでそれらしいものを探してみると
$ ls -la /tmp/tmux-1000/
total 8
drwx------ 2 worker worker 4096 Sep 26 12:19 .
drwxrwxrwt 6 root   root   4096 Sep 26 12:20 ..
srwxrwx--- 1 worker worker    0 Sep 26 11:47 default
Byobu を実行するときに -L オプションを省略するとこの 'default' ソケットファイルを指定したことになり、'default' ソケットファイルを使っている Byobu (tmux) では全て画面が共有されるようです。

一方の Byobu では -L オプションを省力 ('default' ソケットファイルを使用) し、もう片方の Byobu では '-L SecondarySocket' を指定して実行してみると期待どおり、共有されない別々の画面が表示されました。

ソケットファイルのディレクトリは
$ ls -la /tmp/tmux-1000/
total 8
drwx------ 2 worker worker 4096 Sep 26 12:31 .
drwxrwxrwt 6 root   root   4096 Sep 26 12:31 ..
srwxrwx--- 1 worker worker    0 Sep 26 11:47 default
srwxrwx--- 1 worker worker    0 Sep 26 12:31 SecondarySocket
別々のソケットファイルができてました。

0 件のコメント:

コメントを投稿