ラベル screen の投稿を表示しています。 すべての投稿を表示
ラベル screen の投稿を表示しています。 すべての投稿を表示

GNU screenで実現するどこでも開発環境

GNU Screenをクラウド上の仮想マシンや、遠隔地に配置してあるマシンで実行させた時の便利さはこの上ない。接続が切れても、つなぎ直せば、それまで使用していた環境が一瞬で復元される。CUI版のリモートデスクトップあるいはVDIといったところ。

最近は、MacBook (2015年春モデル)を、しばしば利用する。そのコンパクトさと軽量さゆえ、外に持ち出すにはもってこいだ。CPUパワーに関しては、非力とまでは言わないが、このマシンでバリバリ開発するのは、Core i7を搭載した高性能なサーバーやデスクトップ機と比べて相対的に効率が悪い。

このマシンとの外出時、ネットワークで遠隔の開発マシンにsshでログインし、screenにアタッチすると、どこでも開発が行える。カフェなどでWIFIが使えれば最高だが、そうでない場合、IIJmioのSIMを入れたiPhoneでテザリングしてもリモートマシンへのpingが100ms前後は出る。少しレスポンスに遅さを感じることもあるが、実用にはなる。それよりも、ちょっとした時間や、アイデアが思いついたとき、迅速に作業できることが、なによりも大きな価値だ。

私がいつも、ログインに使用するコマンドは以下のようなものだ。

$ ssh remote-machine -t "screen -dr pts-1"

Macのターミナルで灰色(DarkGray)の文字が表示されない場合の対応

env | grep TERMとして、-256colorの付かない単なるxtermやscreenの場合、掲題の現象が発生することがある。
export TERM=xterm-256color
または
export TERM=screen-256color
とすればいい。

screen起動時に、自動的にこの環境変数を設定するには以下のいずれかを行う。
1. screenのコマンドラインオプションで-T screen-256colorをつける。
2. .screenに以下を記載する。
term screen-256color

sshで直接リモートホストのscreenを使用する。


$ ssh host -t "screen -r"
ポイントは-tオプション。これが無いと端末が確保されないので、screenなど端末を使用するプログラムを起動できない。

GNU screenでFlow controlを無効にする

.screenrcに次の2行を追加。単にXonとデフォルトflowのショートカットを無効にする。
bind s # prevent xon
bind f # prevent changing defflow
参考: screenで入力がCtrl-sが効かなくなったときの対応

screenで入力がCtrl-sが効かなくなったときの対応

私は、screenのエスケープキーをCtrl-sに割り付けている。デフォルトはCtrl-aだが、これはカーソルを先頭に移動するために使うので変更している。たまに何かを押し間違ってCtrl-sが効かなくなるときがある。そうすると、他のwindowへも移動できなくなりとても困る。そのWindowをexitコマンドで終了すると、エスケープの効くWindowに戻るのだが、新しいWindowを作っても、そのWindowではやっぱりエスケープが効かないことがある。その場合、エスケープが効くWindowで次のように入力することで、新しいWindowsでエスケープを有効にすることができる。
Ctrl-s(エスケープ)
↓
: (:が画面左下に表示される)
↓
defflow off
追記:実はもっと簡単にできました。 http://transparent-to-radiation.blogspot.jp/2015/06/screenctrl-s.html

参考: GNU screenでFlow controlを無効にする