killd () {
for session in $(screen -ls | grep -o '[0-9]\{5\}')
do
screen -S "${session}" -X quit;
done
}
运行它,调用 killd
25
== 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.
11 回答
"kill"只会杀死一个屏幕窗口 . 要"kill"完整会话,请使用
quit
.示例
您可以通过执行以下操作来终止在屏幕会话中没有响应的分离会话 .
screen -list
以标识分离的屏幕会话 .注意:
20751.Melvin_Peter_V42
是您的会话ID .:quit
List screens:
Output:
Kill screen session:
当给出一些有意义的名字时,杀死一个会话会更容易:
您可以直接前往屏幕会话所在的位置并运行:
结果
然后删除它:
uscreens
目录中不再包含26727.pts-0.devxxx
文件 . 现在确保输入:screen -ls
你应该得到:
应该清理所有 dead 屏幕会话 .
对我来说简单
作品 . 这是在屏幕会话中 .
将此添加到
~/.bashrc
:然后使用
cleanscreen
清除所有屏幕会话 .要终止所有分离的屏幕会话,请在.bash_profile中包含此函数:
运行它,调用
killd
或者,在屏幕会话中,您只需键入 exit
这将终止屏幕启动的shell会话,这有效地终止了您所在的屏幕会话 .
无需担心屏幕会话ID等 .