问题描述
我正试图杀死一个屏幕会话。我注意到了很多其他相关的问题,但这些答案都没有对我有用。我试图杀死以下会话:
screen -ls
There is a screen on:
23520.pts-6.porkypig (09/30/2013 02:49:47 PM) (Detached)
1 Socket in /var/run/screen/S-root.
screen -r 23520.pts-6.porkypig
现在我参加了会议。根据文件:
http://www.gnu.org/software/screen/manual/screen.html#Quit
我应该按”control a”然后“控制”。我这样做,没有任何反应。
另一个解决方案是按Ctrl
+ a
并输入:quit。然而,它再也没有做任何事情。事实上,按下control
+ a
后,除了消息“No Other Window”之外绝对没有任何事情发生
最佳解决方案
首先,您需要重新连接到屏幕会话screen -r 23520
。然后按ctrl
+ a
然后按下大写K
并按下y
,当它询问你是否真的要杀死会话时
次佳解决方案
您可以在不附加屏幕的情况下退出该屏幕。首先,找到它的会话:
$ screen -ls
然后退出:
$ screen -XS [session # you want to quit] quit
第三种解决方案
这将杀死所有分离的屏幕:
screen -ls | grep detached | cut -d. -f1 | awk '{print $1}' | xargs kill
这会杀死所有连接或分离的屏幕
screen -ls | grep pts | cut -d. -f1 | awk '{print $1}' | xargs kill
第四种方案
因此,通过所有这些官方建议,让我们更轻松,更有效,更直接。
pkill screen
谁想进入一个未知的un-needed屏幕,只是为了按下一些大多数人几乎不记得的命令?这样可以避免进入它,直接杀死它。
另外,如果你有一个以上,这将一举夺走所有这些。
第五种方案
我在更新屏幕时遇到了这个问题。无论我在命令中添加了多少-D
或-R
,screen
命令在尝试重新连接会话时都会挂起。但是,screen -ls
可以方便地提供会话的pid,允许您使用以下内容进行干预:
10:42 user ~ $ screen -ls
There is a screen on:
5730.my_screen (Detached)
1 Socket in /tmp/screens/S-user.
10:42 user ~ $ sudo kill 5730
10:43 user ~ $ screen -ls
No Sockets found in /tmp/screens/S-user.
(这与布莱恩托马斯的回答类似,但是他会杀死所有正在运行的屏幕会话,如果您打开多个屏幕但只有一个行为不端,这可能不是您想要的。)