之前的文章中搬瓦工中文网分享过 screen 的使用方法(Linux 后台运行程序的两种方法:screen 和 nohup 的安装和使用),其中提到如果我们想恢复一个 screen 窗口,可以使用 screen -r 这个命令来恢复。但是有时候我们使用 screen -r 尝试恢复后台进程的时候,会发现无法恢复,提示这个 screen 状态已经是 Attached,无法成功恢复。这种情况其实还挺常见的,今天就分享一下如果遇到 screen 窗口无法恢复的问题该怎么办。
一、screen 无法恢复的问题
如图所示,当我尝试在一个新窗口恢复 screen 进程的时候,提示“There is no screen to be resumed matching lnmp”,但是这个 screen 目前其实是存在的,只不过状态是显示为 Attached,所以目前无法恢复。

而造成这样的原因也很容易理解,因为出于某些原因,我们可能在其他终端已经运行了这个 screen 窗口,也可能之前终端意外退出导致这个窗口没有正常关闭,总之就是系统认为这个 screen 窗口已经在某个终端运行着呢。
二、screen 强制恢复的方法
如果想要强行恢复 screen,解决方法如下:
screen -D -r <session-id>
也就是在 -r 前面加个 -D,先踢掉之前登录的用户,然后我们就可以正常登录了。