杀死独立屏幕会话[关闭]


864

我从某个地方得知一个分离的屏幕可以被杀死

screen -X -S [session # you want to kill] kill

可以从哪里获得[您想杀死的会话#]

screen -ls

但这是行不通的。哪里不对了?正确的方法是什么?


25
“某处”并不总是一个很好的信息来源。尝试“人屏”。
innaM

27
正确的命令是screen -S sessionname -p 0 -X quit
jimmetry 2013年

killall-#屏幕[#=您要杀死的屏幕数量]
CArnold

我只是使用出口
TPArrow

在屏幕上时按CTRL + D是最简单的命令。
唐·金

Answers:


1267

“杀死”只会杀死一个屏幕窗口。要“杀死”整个会话,请使用quit

$ screen -X -S [session # you want to kill] quit

对于无效会话,请使用:$ screen -wipe


112
在ubuntu中输入“退出”(不带引号):P
mzalazar 2013年

16
exit可以,但是需要在打开的每个屏幕中键入。quit甚至不起作用
kapad

4
@kapad实际上退出有效,如果您以内联方式编写它-X -S pid / sockname退出
Eduard

20
在OSX上进入screen -X quit任何终端的操作都会终止所有活动会话
Michel

5
Ctrl + D也可以使用
易欣

499

通过执行以下操作,可以杀死在屏幕会话中没有响应的分离会话。

  1. 键入screen -list以标识分离的屏幕会话。

    〜$屏幕-列表  
        屏幕上有:  
             20751.Melvin_Peter_V42(独立)  
    

    注意:20751.Melvin_Peter_V42是您的会话ID。

  2. 附加到独立的屏幕会话

    屏幕-r 20751.Melvin_Peter_V42
  3. 连接到会话后,按Ctrl+,A然后键入:quit


20
您可以不使用全名使用screen -r 20751
Gal Bracha

53
或:Ctrl + a,k
laffuste

@laffuste的评论是为我工作,但quit:quit导致command not found我的远程Linux服务器上(也许是操作系统或屏幕的版本之间的差异是罪魁祸首)
哈克-R

一旦连接到屏幕上,exit也可以使用
PankajKabra '17

145

列表屏幕:

screen -list

输出:

There is a screen on:
23536.pts-0.wdzee       (10/04/2012 08:40:45 AM)        (Detached)
1 Socket in /var/run/screen/S-root.

取消屏幕会话:

screen -S 23536 -X quit

1
'screen -ls'也可以。;)
Atul Vaibhav's

113

给出一些有意义的名称后,终止会话会更容易:

//Creation:
screen -S some_name proc
// Kill detached session
screen -S some_name -X quit

为什么screen -Sscreen -r呢?
43Tesseracts

1
该答案使用会话的名称,这比查找ID更方便。谢谢!
Paul Kenjora '18年

43

您可以仅转到放置屏幕会话的地方并运行:

 screen -ls

导致

 There is a screen on:
         26727.pts-0.devxxx      (Attached)
 1 Socket in /tmp/uscreens/S-xxx. <------ this is where the session is.

并删除它:

  1. cd / tmp / uscreens / S-xxx
  2. ls
  3. 26727.pts-0.devxxx
  4. rm 26727.pts-0.devxxx
  5. ls

uscreens目录将不再包含该26727.pts-0.devxxx文件。现在确保输入以下内容:

screen -ls

您应该得到:

在/ tmp / uscreens / S-xxx中找不到套接字。


4
如果屏幕“卡死”,这是唯一可行的解​​决方案。还没死,但是无法依附。
redreinard

当屏幕完全锁定时,这对我有帮助,但是我确实也需要查找并终止实际过程。ps aux | grep screen找到了该pid,然后我发出了一个pid kill将其删除。根据屏幕上运行的内容,您可能还需要临时文件和锁来进行清理。
Lomky


23

将此添加到您的~/.bashrc

alias cleanscreen="screen -ls | tail -n +2 | head -n -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit"

然后使用cleanscreen清理所有屏幕会话。


11
一个简单的单线:screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
Ariel 2014年

3
进行了处理,但是必须稍作修改才能在OSX上使用: screen -ls | tail +2 | head -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit
Jonathan

轻微改进:-screen -ls | grep附| 切-d。-f1 | awk'{print $ 1}'| xargs -I {}屏幕-d {}
Abhay Yadav


16

要终止所有分离的屏幕会话,请在.bash_profile中包括以下功能:

killd () {
for session in $(screen -ls | grep -o '[0-9]\{5\}')
do
screen -S "${session}" -X quit;
done
}

运行它,打电话 killd


5
有时不是5位数字,所以我用:killed(){在$(screen -ls | grep -o'[0-9] \ +')中进行会话-S“ $ {session}” -X quit; }
Kostyantyn

7
== ISSUE THIS COMMAND
[xxx@devxxx ~]$ screen -ls


== SCREEN RESPONDS
There are screens on:
        23487.pts-0.devxxx      (Detached)
        26727.pts-0.devxxx      (Attached)
2 Sockets in /tmp/uscreens/S-xxx.


== NOW KILL THE ONE YOU DONT WANT
[xxx@devxxx ~]$ screen -X -S 23487.pts-0.devxxx kill


== WANT PROOF?
[xxx@devxxx ~]$ screen -ls
There is a screen on:
        26727.pts-0.devxxx      (Attached)
1 Socket in /tmp/uscreens/S-xxx.

那不是只是删除套接字,而不是终止其背后的进程吗?
Martin C.

从创建僵尸进程的角度来看,这种方法有风险吗?
Fedir RYKHTIK

5

另外,在屏幕会话中,您所要做的就是键入exit

这将终止由屏幕启动的外壳会话,从而有效终止您所在的屏幕会话。

无需理会屏幕会话ID等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.