Linux
screen
サーバー管理
インフラ

Screen コマンドによる Linux ターミナル共有

  • 参考
  • 概要
    • Screenコマンドを使うと、Linuxコンソールを複数ユーザセッション間で共有できます。
  • ユースケース
    • Devチームのペアプログラミングよろしく、Opsチームにも部下育成やダブルチェックを兼ねて、Linuxサーバオペレーションを複数名で行う場合があります。そんな時は、物理コンソールに人が集まって行うのもよいですが、ターミナルのセッションをSSHで皆が共有できるScreenを使うと捗ります。
  • 環境例
    • Debian Jessie +
    • 共有元ユーザ: parent
    • 共有先ユーザ: child

事前準備

  • screen インストール
sudoer_console
sudoer@test:~$ sudo apt-get update && sudo apt-get install screen
  • screen セッションを各ユーザで共有可能にする設定
sudoer_console
sudoer@test:~$ sudo chmod u+s /usr/bin/screen
sudoer@test:~$ sudo chmod 755 /var/run/screen

セッション公開

  • screen セッション share を立てる
parent_console
parent@test:~$ screen -S share
  • childユーザへ share セッションを共有する
parent_console
parent@test:~$
(Ctrl+a) 
:multiuser on
Multiuser mode enabled
parent@test:~$
(Ctrl+a) 
:acladd child
parent@test:~$

セッション参加

  • parent ユーザが立てたscreenのセッション名を確認し、乗り込む
child_console
child@test:~$ screen -ls parent/
There is a suitable screen on:
        1448.share      (03/07/2017 10:49:09 AM)        (Multi, attached)
1 Socket in /var/run/screen/S-parent.
child@test:~$ screen -x parent/share

ログアウトとデタッチの動作

  • parent ユーザが screen セッションとして起動されているloginセッションからログアウトする
parent_console
parent@test:~$ exit
[screen is terminating]
parent@test:~$
  • child ユーザが screen セッションとして起動されているloginセッションからログアウトする
child_console
parent@test:~$ exit
[screen is terminating]
child@test:~$
  • parent ユーザが screen セッションshareをデタッチする
parent_console
parent@test:~$
(Ctrl+A) (d)
[detached from 1448.share]
parent@test:~$
  • child ユーザが screen セッションshareをデタッチする
child_console
parent@test:~$
(Ctrl+A) (d)
[detached from 1448.share]
child@test:~$