LinuxにSSHでログインするのに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会議でそんな話を聞いていたから浮かんだ。やっぱり会議に出ててよかった。