关于linux:杀死分离的屏幕会话

Kill detached screen session

我从某个地方学到了一个独立的屏幕可以被杀死

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

你可以从哪里得到[你要杀的会话#]

1
screen -ls

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


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

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

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


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

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

    1
    2
    3
    ~$ screen -list  
        There are screens on:  
             20751.Melvin_Peter_V42  (Detached)

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

  • 附加到分离的屏幕会话

    1
    screen -r 20751.Melvin_Peter_V42
  • 连接到会话后,按Ctrl + A,然后键入:quit


  • 列表屏幕:

    1
    screen -list

    输出:

    1
    2
    3
    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.

    杀死屏幕会话:

    1
    screen -S 23536 -X quit


    当给出一些有意义的名字时,杀死一个会话会更容易:

    1
    2
    3
    4
    //Creation:
    screen -S some_name proc
    // Kill detached session
    screen -S some_name -X quit


    您可以直接前往屏幕会话所在的位置并运行:

    1
     screen -ls

    结果

    1
    2
    3
     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
  • 1
    ls
  • 1
    26727.pts-0.devxxx
  • 1
    rm 26727.pts-0.devxxx
  • 1
    ls
  • uscreens目录中不再包含26727.pts-0.devxxx文件。现在确保只需键入:

    <5233>

    你应该得到:

    No Sockets found in /tmp/uscreens/S-xxx.


    1
    screen -wipe

    应该清理所有死屏会话。


    将其添加到您的~/.bashrc

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

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


    对我来说简单

    1
    exit

    作品。这是在屏幕会话中。


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

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

    要运行它,请调用killd


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    == 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.


    或者,在屏幕会话中,您只需键入exit即可

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

    无需担心屏幕会话ID等。