morimorihogeです。暑くて溶けて死ぬ。今日はGNU screenの話。
皆様日々のTerminal環境には何を使っているでしょうか?最近だとtmuxがメジャーなのかなと思います。
tmuxのカスタマイズが面倒な人はbyobuやtmux-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使ってみて下さい!昔話でした :)