Kill detached screen session
我从某个地方学到了一个独立的屏幕可以被杀死
1 | screen -X -S [session # you want to kill] kill |
你可以从哪里得到[你要杀的会话#]
1 | screen -ls |
但这不起作用。 哪里不对了? 什么是正确的方法?
"杀死"只会杀死一个屏幕窗口。要"杀死"整个会话,请使用
例
1 | $ screen -X -S [session # you want to kill] quit |
对于死会议使用:
$ screen -wipe
您可以通过执行以下操作来终止在屏幕会话中没有响应的分离会话。
键入
1 2 3 | ~$ screen -list There are screens on: 20751.Melvin_Peter_V42 (Detached) |
注意:
附加到分离的屏幕会话
1 | screen -r 20751.Melvin_Peter_V42 |
连接到会话后,按Ctrl + A,然后键入
列表屏幕:
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 |
<5233>
你应该得到:
No Sockets found in /tmp/uscreens/S-xxx.
1 | screen -wipe |
应该清理所有死屏会话。
将其添加到您的
1 | alias cleanscreen="screen -ls | tail -n +2 | head -n -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit" |
然后使用
对我来说简单
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 } |
要运行它,请调用
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等。