GNU screen

自分は普段はGNU screenという仮想端末ソフトを使ってます。これは、GUIをもたない仮想端末ソフトです。

これを使うと、何が良いかというと、
いきなり通信が切れても、起動したホスト上でセッションは動いている
ということです。あと、ログイン環境を変えてもセッションを継続できるという事です。いろんな環境からリモートでログインしていて、PHSやイーモバのときはどうしても不安定でたまに切れる自分の環境では欠かせません。
色々カスタマイズも出来るので、自分は画像のように最後のコマンドやログインしてるサーバ名をそれぞれのタブに表示させたり、メールの未読件数を表示したりしてます。
.screenrcを晒しておきます。

escape ^t^t
utf8 on
defencoding utf8

backtick 0 10 0 /home/k-suke/bin/chk_unread_mail.rb INBOX system
hardstatus alwayslastline "[%y-%m-%d %02c] %0`"
caption always "%-w%{=b bw}%n %t%{-}%+w"
defmonitor on

ここで使ってるchk_unread_mail.rbは、お手製imap未読メール件数確認プログラムです。(プライベート用gmail版)

#!/usr/bin/env ruby
require "net/imap"

host="imap.gmail.com"
port=993
use_ssl=true
user="ksuke.s@gmail.com"
pass="himitsu"

imap = Net::IMAP.new(host,port,use_ssl)
imap.login(user,pass)
status_line = ""
ARGV.each do |arg|
title = arg.split(".").last
num = imap.status(arg,["Unseen"]).values.first
status_line << " #{title}(#{num})"
end
imap.disconnect
puts status_line

さらに、screen用のzshの設定です。(ターミナルの名前をつけるための設定です。)

# screen
preexec () {
[ ${STY} ] && echo -ne "\ek${1%% *}\e\\"
}

function ssh_screen(){
eval server=\${$#}
screen -t "[$server]" ssh "$@"
}
if [ x$TERM = xscreen ]; then
alias ssh=ssh_screen
fi

screenの使い方は

  • 起動するときは"screen -D -RR"
  • 新しくターミナルを立ち上げるときは"Ctrl-t c"
  • ターミナル間を移動するときは"Ctrl-t 数字"
  • 中断するときは"screen -d"

を覚えておけば、とりあえずどーにかなるんじゃないかと思いますw