hachiNote

勉強したことをメモします。

screenでセッションの復元

LinuxSSHでログインするのにPuTTYを使ってますが、しばらく放置しておくと、勝手にタイムアウトして切断されてしまいます。

今日作業中にLANケーブル抜いたら(あたりまえですが)切断されてしまいました。でも、今日はなんか方法がないか調べてみました。

SSHのセッション自体を復帰する方法はわかりませんでしたが(無理なのかも)、SSHで入った後にすぐscreenを使っていたので、これで復帰できそうです。

ここが参考になりました。
http://www.dekaino.net/screen/

SSHで入りなおして、ps aux でプロセスを調べてみると、前回のSSHDプロセスとともにscreenのプロセスが残っています。

まずは screen -r で復帰できないかなとやってみましたが、アタッチできるものがない、と言われます。screen -ls でscreenのプロセスを見てみると、前回のものは Attached という状態になっています。前回のSSHDにバインドされたままってことっぽいです。

で、上記のサイトを読むと、

-Dオプションの場合はリモートの端末で、screenを実行していたシェルをログアウトさせます。これをパワーデタッチといいます。

と説明されています。こ、これだ!

さっそく

# screen -D (プロセス番号)

とうち、もう一回 screen -ls と打つと……、おお、プロセスが Detached になっている! ps aux でプロセスを見ても、前回のSSHDは消えている。

これでscreenをアタッチできるのでは……、期待しながら

# screen -r

と打つと……、やった! 前回の画面の状態に復帰しました! ブラボー!
長年の疑問が解決してすっきり。

screenでデタッチできるっていう考えも、札幌Ruby会議でそんな話を聞いていたから浮かんだ。やっぱり会議に出ててよかった。