10年以上使い続けている.screenrcを晒す

morimorihogeです。暑くて溶けて死ぬ。今日はGNU screenの話。

皆様日々のTerminal環境には何を使っているでしょうか?最近だとtmuxがメジャーなのかなと思います。
tmuxのカスタマイズが面倒な人はbyobutmux-themepackを突っ込むとそれなりに設定された初期環境が使えるので便利ですよね。

そんな今やみんな使ってるとも言えるtmuxですが、GitHubのリリースタグ履歴を眺めてみると、現状まだ公開されている0.8のリリースが2009年と比較的新しいソフトウェアであることがわかります。
今回紹介するGNU screenは、tmuxよりもずっと以前からあるソフトウェアで、言ってしまえばtmuxと同じ立ち位置のソフトウェアです。

GNU screenの特徴

今回この記事を書くためにscreenのGitリポジトリを辿って見ましたが、screen 1.1のソースに

Copyright (c) 1987, Oliver Laumann, Technical University of Berlin.

という記述がありました。30年の歴史!すごい。

そんなGNU screenですが、まだ更新されており、macOSでHomebrewを使っている人であれば brew install screen すれば最新版を使うことができます(執筆時点では 4.06.01)。
※Sierraビルトインのscreenは 4.00.03 で、左右への画面分割ができません(上下はできる)

正直なところ昨今のディストリビューションにはtmuxがディストリビューション公式のパッケージリポジトリにも入っており、そこまで積極的にscreenを使う理由は無くなってしまったところがあります。
しかし、それでも以下の様にいくつかのケースでscreenが嬉しいケースは(ごくわずかながら)あります。

  • すごく古いディストリビューションで、tmuxパッケージが提供されていない(かつ公式パッケージ以外導入してはいけない環境という縛りがある)
  • tmuxがなぜか動かなくなってしまい、直し方がよく分からないけどとにかくtmux的な何かを使いたいとき(最近僕の環境でたまにある。なんだろうこれ?)

というわけで、僕は今でもtmuxではなくscreenを使うことがちょいちょいあります。実際の所主要なキーバインドはscreenとtmuxで似たような設定になっているため、そこまで頭の切り替えに手間がかかることもないです。

育てたscreenrcを公開&ポイント紹介

というわけで、かれこれ学生時代から10年以上使い続けてきたscreenrcを以下のGistで公開してみます(元々複数ファイルに分割していたのですが、今回の記事を機に1ファイルにmergeしました)。
以下のファイルを $HOME/.screenrc として保存しておけば、screenの起動時に読み込まれます。

morimorihoge/.screenrcのGistへのリンク

使用感は以下の様な感じになっています。byobuやtmuxのできあいthemeを使っている人はそれほど違和感なく使えるのではないかと思います。

そこそここだわったのは右下のstatus部分でしょうか(イマドキのbyobuとかで慣れてる人にとってはショボいと感じるとは思いますが)。

特徴としては、右下に時刻を秒単位表示することで 1秒おきに画面更新のためのパケットが流れるため、SSHサーバや間に挟まるFWのkeepalive設定が厳しくてもセッションが切れない ということがあります。この手の時刻表示(特に秒)は地味に便利で、操作が動かないときにSSHセッションが切れているのかどうかの見分ける材料にもなります。

あとはその左にLoad Averageが表示されているのは、こちらも端末が固まったときに高負荷による停止なのか、ネットワーク障害による停止なのかを見分ける材料になりますね。

設定にこだわってた頃は他にも色々と出したりしていたのですが、最終的に実用を考えるとこの設定に落ち着きました。たまにすごく狭いウィンドウで作業をすることもあったので、ステータス表示が長すぎると不便なんですよね。
今となってはほとんどクラウドに移行しましたが、昔は場合によってはデータセンターやオフィスの端っこにあるサーバにSSHではなく直接コンソールログインしてXのない環境でマウスなし環境で作業することもありました。そういえばそんな環境で日本語表示するのに kon とかもあったなあ(オッサン感

マウスやX Windowsがない環境でもscreen/tmuxがあればスクロールバックしたり、履歴からコピー&ペーストしたりできるので、サーバ作業をする人はtmuxかscreenのどちらかは使えるようになっておきたいものですね。

まとめ

というわけで、懐かしのGNU screenの話をしてみました。

screenの存在自体は学生時代にバイトしていた会社の某先輩に教えてもらってものすごく感動した記憶があります。それ以降screenなしには生きられない体になりました。
特に昔はPHS(AirHとか@FreeD)からSSHで入って泥臭い作業をターミナルでやることも多かったので、特に思い入れがあります。10分おきくらいに強制的にセッション切られる環境で作業したこともあったなあ

みなさんも気が向いたらぜひscreen使ってみて下さい!昔話でした :)

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

morimorihoge

高校卒業後,学生をやりながらずっとWebアプリ開発に携わってきました.2010くらいまではPHP/Symfonyプログラマでしたが,それ以降のWeb開発はRailsほぼ一本に宗旨替えしました.開発とは別にサーバ構築・運用も10年以上やってきているので,要件定義から設計・実装・環境構築・運用まで一通り何でもこなせます.開発以外では季節により大学でWebサービス開発やプログラミング関連の非常勤講師もしており,技術の啓蒙・教育にも積極的に関わっています.最近はPM的な仕事が増えていますが,現役開発者としていつでも動ける程度にはコードもサーバも弄る日々を送っています.AWS 認定ソリューションアーキテクト – アソシエイトレベル取りました

morimorihogeの書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ