目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

screen使ってます?

独りアドベントカレンダー。ターミナルに関わるTips的な何かを書くよ。たぶん続かないけど、やれるだけやってみるよ。

みなさんはscreenを使っていますか?もうすでにscreen,tscreen,tmuxと言ったものを使っていらっしゃる方はブラウザを閉じていただいても大丈夫です。

最近はtmuxが便利でそこかしこで使われ始めてますが、今回はscreenを紹介します。
screenはターミナル上に複数のshellを実行できます。タブブラウザのイメージでしょうか。1ターミナルで複数shellを立ち上げることができるので、ターミナルを複数立ち上げて作業環境がごちゃごちゃすることがなくなります。

ちなみに私はtscreenを使用しています。

screenを使うと何が嬉しいのか。

  1. いくつもターミナルを立ち上げないで済む
  2. sshの接続が切れてもプログラムの実行が止まらない
    • 回線が細いところでも安心。
  3. 作業状態を保存できる
    • 翌日、退勤時と同じ状態から作業を始めることができる
    • 違うマシンからつないでも同じ状態から作業を始めることができる
  4. ログをさかのぼることができる。

このあたりが、メリットですが、サーバ作業をする人には1番目2番目あたりが、コンソールで開発する人には1番目3番目あたりが嬉しいのではないでしょうか。
screenなしの場合、デプロイ作業中にsshの接続が切れて中途半端に処理が止まると目も当てられないので、2番目はかなりでかいのでは無いでしょうか。

インストールしよう

うれしさが分かったところでインストール方法ですが、debianならaptitude install screenでは入ります。tscreenを入れたい場合は以前自分が書いたエントリを参照してください。

簡単な操作方法

screenのコマンドキー(以下Command)のデフォルトはCtrl + aです。また、Command + : 叩くとscreenコマンドを叩けます。が、ショートカットの方が使用頻度が高いです。(自分の場合
screenのショートカットキーはコマンドキーと1文字で成り立ってます。よく分からなくなったら、Command + ?を叩いてみると良いでしょう。

screen起動
% screen -S $SCREEN_NAME

スクリーン名を指定することができます。複数screenを立ち上げる時に名前を指定しておくと便利です。

detach
% screen -d

screenの接続を切ります。

atach
% screen -r $SCREEN_NAME

スクリーン起動時に指定した名前のscreenを呼び出すことができます。

リスト表示
% screen -list

起動しているスクリーンをリスト表示できます。

ショートカット
ショートカット 概要
Command + c 新しいウインドウ(shell)の起動
Command + n ウィンドウの右方向へ切り替え
Command + p ウィンドウの左方向へ切り替え
Command + d detach、screenの接続を切る
Command + 数字 任意のスクリーン番号のウインドウへ切り替え
Command + ? ヘルプ


ほかにもウィンドウ分割など便利な機能があるのでman (t)screenなどしてみて機能を調べてみるとよいでしょう。

明日のネタは明日考えます。