screen 可以帮助我们在服务器上执行耗时操作(例如安装环境、FTP 等)时,防止因为意外断线导致任务中断的问题。今天老王在使用 screen -r 恢复会话时,出现了一个错误:There is a screen on: 2467.test (Attached) There is no screen to be resumed matching test.,本文分享下出现这个错误的原因和解决办法。
一、问题描述与分析
在进行耗时操作时,我们可以用 screen -S
命令开启一个新的窗口,例如 screen -S test
,之后如果因为意外断线导致连接中断时,我们只需要重新 SSH 到服务器,使用 screen -r test
恢复窗口即可。这里的 test 是窗口的名字。
在使用 screen -r
恢复会话时,出现了这个错误,没有恢复成功:
There is a screen on:
2467.test (Attached)
There is no screen to be resumed matching test.
根据错误的提示,test 这个窗口确实是存在的,但是处于被占用的状态(attached),这种情况可能是因为其它人正使用这个会话,或者之前因为 SSH 超时等原因导致会话未正常退出,所以无法再次进入
二、问题解决办法
解决办法也很简单,我们需要使用 -d
来把这个 screen 窗口给 detach 掉就行,例如我这里的命令需要改成:
screen -r -d 2467
其中 2467 是使用 screen -r
提示的窗口编号。这样就能正常恢复这个窗口了。