screenコマンド使わなきゃ、文字化けもなくなったし

私は、サーバでの作業はターミナルでおこない、作業が終わればexitで抜けて終了というオペレーションを実施していました。普段なんの疑いも持たずにおこなっていた行動ですが、しかし世の中には便利なものがあるということを知りました。それは、screenコマンドです。
このコマンドは、画面を仮想化してくれるらしく、ターミナルをクローズしても再度ログインしてサーバ上に残っている画面を再度利用できるというのです。また、不意にサーバとの通信が断絶しても大丈夫というシロモノらしいのです。
この便利なコマンドを使わない手はないということで、早速screenコマンドを使うことにしました。使用にあたって、ハマったことや自分の設定などを下記に記録しておきます。

一応メリットなど

自分に直結しそうなメリットを纏めておきます。

  • 作業環境をそのまま残して帰れる。
    • 整えた環境をそのまま使い続けれるのが嬉しいです。
  • 別の場所からでもアクセスできる。
    • マルチディスプレイモードというヤツらしいです。
    • 会社からでも家からでも同じ環境を使用できるのが嬉しいです。
  • 不意にネットワークが切れても大丈夫。
    • 時間のかかる処理をしている最中に不意にネットワークが切れて処理が中断すると、非常にブルーです。
    • 再度実行や復旧の手間などを考えなくてよくなるのが非常に嬉しいです。

その他にも色々とメリットがあるようです。下記ページを参考にさせて頂きました。

インストール、基本的な操作

GNU screen
こちらのページに基本的なことは記載されていました。一通り読んでおくとよさそうです。
以下はよく使う操作など。

キーバインド 効果
^A-c 画面(端末)を新規生成します。
^A-n 次の画面に移動します。
^A-d screenの画面から抜ける時に使用します。
^A-: コマンドモードへの移行、コマンドモードでscreenのコマンドを実行するらしい?
# リスト表示
screen -ls
# 複数screenがある場合は-rのあとに番号を入力します。
screen -r

vimソースコードを開くと文字化けする

サーバがEUCということもあり、サーバ上のvimPHPソースコード(文字エンコーディングEUC-JP)をオープンすると文字化けして画面が正しく表示されないということがありました。
自分はMacBookを使用していますが、結果的にはターミナルの文字エンコーディングEUCにし、vim側の文字エンコーディングは特に設定しない様にすることで問題なく使用できるようになりました。
ターミナルの設定がUTF-8のままで、vim側でencoding=utf8やfileencodings=euc-jpなどを設定したりしましたが、結局うまくいきませんでした。うまいやり方があるのかもしれませんが、自分では解決できなかったため、ターミナル側の設定でやりくりしました。

その後判明したこととして、上記内容だけではまだ文字化けは解消されていませんでした。結局のところ、.screenのdefencoding eucJPもコメントアウトすることで文字化けが解消されました。もしかすると、文字化けに関してはこの設定が悪さしていただけなのかもしれません。。。

プロンプトの変更

Let's GO!:GNU Screen のススメ - livedoor Blog(ブログ)
こちらを参考にさせて頂いて、screen内でのプロンプトの表示を変更しました。screenのウィンドウ番号を入れてみました。

vim ~/.bashrc
if [ "$TERM" == "screen" ]; then
    export PS1='[\u@\h:$WINDOW:\w]\$ '
fi

~/.screenrc

各ページの設定を参考にして以下のような.screenrcを作ってみました。
まだ使い勝手といったところがよくわかっていないため、escapeやキーバインド変更などはおこなっていません。

startup_message off
autodetach on
vbell off

#defencoding eucJP

shell bash

#escape ^Z^Z

logfile "~/log/screen/screen%d_%m(%y).log"
log on
hardcopydir "~/tmp"

hardstatus alwayslastline "screen |%c %m/%d | %w"

defscrollback 10240


以上、こんな感じです。
今のところ、CUIライフを快適に過ごせています。vimでコーディングをしているので、一日の業務終了時にオープンしたものをクローズしなくてよくなった点に満足しています。また、無線LANが急に切れても大丈夫になったので、その点も非常に助かってます。