前期第03回 - oddmutou/jugyo-2025techc GitHub Wiki

目標

  • ターミナルマルチプレクサ (screen) 使えるように

GNU Screen

サーバーの運用(operation)でほぼ必須になってくるのがCLI上での操作です。

この授業ではクラウド上のサーバーを利用します。クラウド上のサーバーを利用するにあたって必須となってくるのがSSH接続しての操作です ※1。

SSHで接続した場合,必然的にCLI(Command Line Interface)での操作になってきます ※2。

この授業でももちろんCLIを使っていきます。CLIでの操作をより快適に行うために,GNU Screen (以降 単に screen と呼びます) というソフトウェアの使い方を今回学んでいきましょう。

※1 もしみなさんが物理的にサーバーを保有・運用し(クラウドに対しオンプレミスと呼びます)Webサービスを運営している会社に入社したとしても,サーバーを操作するときにはサーバーとなるコンピュータにキーボードとマウスとディスプレイを直接繋いで操作するということはあまり行はないでしょう。毎度データセンターに行くと効率が悪いため,基本的にはオフィスからデータセンターにSSHで接続します。一方で,パブリッククラウドサービスではWeb上のGUI画面ですべての操作を行うことができ,FaaSやPaaSを用いる場合は従来のサーバー運用に相当する作業がほぼ無くなる場合もあります。

※2 SSH越しにGUI操作を行うための X11 Forwarding という手法や,リモートデスクトップといった技術もあります。しかしGUIを立ち上げるためのサーバーの計算リソースの消費や,転送量増,遅延増といった理由で,特別の理由でGUI操作が必須な場合以外サーバー運用で使うことは稀です。

screen のインストール

多くのLinuxディストリビューションでは標準で入っていますが,インストール方法は以下の通りです。

yumの場合(amazon linux2, centos, redhat などの場合)

sudo yum install screen -y

aptの場合(debian ubuntu などの場合)

sudo apt install screen -y

使い方

screen と叩くだけで起動します。

screen

起動後の操作

Ctrl+a (コントロールキーとAキーを同時押し)の直後に,なんらかのキーを押して操作をする仕組みになっています。

  • 新しいウィンドウを開く場合 Ctrl+a のあとに c
  • (2つ以上のウィンドウを開いているとき)次のウィンドウに移動する場合 Ctrl+a のあとに n
  • (2つ以上のウィンドウを開いているとき)前のウィンドウに移動する場合 Ctrl+a のあとに p

デタッチ&アタッチ

実行中のまま,操作を中断したい場合はデタッチすることによってscreenのセッション抜けることができます。

Ctrl+a のあとに d

これをデタッチと呼びます。

また,デタッチしておいたscreenのセッションに再び入る場合,以下のコマンドでアタッチできます。

screen -r

sshがタイムアウトした,不慮の事故で接続が切れてしまった,などの理由で,デタッチしていないscreenのセッションに再び入りたい場合は以下のコマンドでデタッチと同時にアタッチできます。

screen -r -d

いまあるscreenのセッション(デタッチされているもの・アタッチされているもの問わず)の一覧を取得したい場合は以下のコマンドで一覧を見れます。

screen -ls

複数のscreenのセッションがある場合は,アタッチしたいセッションの番号(先程のscreen -ls↑で確認できます)を指定することによってアタッチすることができます。

screen -r 番号

ウィンドウを閉じたい場合

exit コマンドで閉じれます。セッションをデタッチではなく完全終了させたい場合は,丁寧に全てのウィンドウを閉じればよいでしょう。

その他

ほかにもいろいろなことができます。 いろいろな方が入門記事をかいているので探して読んでみるとよいでしょう。 例 https://note.crohaco.net/2015/gnu-screen-study/

.screenrc

前回はvimの設定ファイル ~/.vimrc を編集しvimをカスタマイズしてみましたが,screenも同じように設定ファイル ~/.screenrc を編集することにより,カスタマイズすることができます。

https://www.google.com/search?q=.screenrc

hardstatus alwayslastline "%{= bw}%-w%{= wk}%n%t*%{-}%+w"

screenrcは難解なところもあるので,他の人の設定をコピペしてみる・真似るところからはいってみる場合が多いかなと思います。

君だけの最強の.screenrcを作ろう!

vimの復習

LANG=ja_JP.UTF-8 vimtutor

レッスン1.6までやりましょう。