WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

GNU Screen で “There is no screen to be resumed.”と表示されてアタッチできない

   

`screen -r`で”There is no screen to be resumed.”と表示されてアタッチができない

SSHの接続がタイムアウトしたり、クライアント側で意図しないネットワーク切断などが原因で、セッションは残っているのにアタッチできなくなることがある。

その場合、標題のようなメッセージが出る。

$ screen -ls 
There is a screen on:
	15748.pts-13.dev	(Attached)
1 Socket in /var/run/screen/S-hotoke.
$ screen -r
There is a screen on:
	15748.pts-13.dev	(Attached)
There is no screen to be resumed.

sshdのプロセスをgrepで探してみると、現在のセッション以外に別のセッションがあることがわかる。
それが前述したタイムアウトしたり突然接続切れたりしたセッション。

$ ps aux|grep pts|grep sshd
okishima   16605  0.0  0.0 111696  2060 ?        S    14:40   0:00 sshd: okishima@pts/6
okishima   17625  0.0  0.0 111696  2056 ?        S    15:40   0:00 sshd: okishima@pts/31
okishima   18198  0.0  0.0 107456   940 pts/31   S+   15:51   0:00 grep sshd

上記の例だと、grepを実行しているpts/31が現在のセッションなので、もう一方をkillする。

$ kill 16605

これでアタッチできる。

$ screen -r

参考

 - Linux , ,