865

我从某个地方了解到一个分离的屏幕可以被杀死

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

[session # you want to kill] 可以从哪里得到

screen -ls

但这不起作用。哪里不对了?正确的方法是什么?

4

11 回答 11

1267

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

例子

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

对于死会话使用:$ screen -wipe

于 2009-10-02T14:10:50.500 回答
499

您可以通过执行以下操作来终止在屏幕会话中没有响应的分离会话。

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

    ~$ 屏幕列表  
        屏幕上有:  
             20751.Melvin_Peter_V42(分离)  
    

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

  2. 附加到分离的屏幕会话

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

于 2010-02-22T03:15:41.087 回答
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
于 2012-10-04T12:52:10.403 回答
113

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

//Creation:
screen -S some_name proc
// Kill detached session
screen -S some_name -X quit
于 2010-09-30T13:09:46.307 回答
43

你可以直接到 screen 会话所在的地方运行:

 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 中找不到套接字。

于 2011-09-29T18:44:45.983 回答
29
screen -wipe

应该清理所有屏会话。

于 2012-05-07T22:03:54.010 回答
23

将此添加到您的~/.bashrc

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

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

于 2013-02-28T00:01:18.190 回答
21

对我来说一个简单的

exit

作品。这是来自屏幕会话。

于 2012-10-18T04:52:11.750 回答
16

要终止所有分离的屏幕会话,请在您的 .bash_profile 中包含此函数:

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

运行它,调用killd

于 2013-01-21T21:02:52.163 回答
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.
于 2010-06-30T16:14:03.480 回答
5

或者,在您的屏幕会话中,您所要做的就是输入exit

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

无需担心屏幕会话 ID 等。

于 2012-03-02T11:21:37.540 回答