我从某个地方学到了一个独立的屏幕可以被杀死
screen -X -S [session # you want to kill] kill
你可以从哪里得到[你要杀的会话#]
screen -ls
但这不起作用。哪里不对了?什么是正确的方法?
“杀死”只会杀死一个屏幕窗口。要“杀死”整个会话,请使用quit
。
$ screen -X -S [session # you want to kill] quit
对于死会话使用:$ screen -wipe
== 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等。
您可以通过执行以下操作来终止在屏幕会话中没有响应的分离会话。
screen -list
以标识分离的屏幕会话。
〜$ screen -list有屏幕:20751.Melvin_Peter_V42(独立)
注意:20751.Melvin_Peter_V42
是您的会话ID。:quit
列表屏幕:
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
当给出一些有意义的名字时,杀死一个会话会更容易:
//Creation:
screen -S some_name proc
// Kill detached session
screen -S some_name -X quit
您可以直接前往屏幕会话所在的位置并运行:
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.
然后删除它:
uscreens
目录中不再包含26727.pts-0.devxxx
文件。现在确保只需键入:
screen -ls
你应该得到:
在/ tmp / uscreens / S-xxx中找不到套接字。
screen -wipe
应该清理所有死屏会话。
对我来说简单
exit
作品。这是在屏幕会话中。
将此添加到您的~/.bashrc
:
alias cleanscreen="screen -ls | tail -n +2 | head -n -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit"
然后使用cleanscreen
清除所有屏幕会话。
要终止所有分离的屏幕会话,请在.bash_profile中包含此函数:
killd () {
for session in $(screen -ls | grep -o '[0-9]\{5\}')
do
screen -S "${session}" -X quit;
done
}
运行它,调用killd