杀死所有分离的屏幕会话

当我执行screen -ls ,我看到以下内容。 我怎样才能杀死所有分离的会话?

有以下屏幕:

  84918.ttys002.ros-mbp (Detached) 84944.ttys008.ros-mbp (Detached) 84970.ttys013.ros-mbp (Attached) 84998.ttys002.ros-mbp (Detached) 85024.ttys002.ros-mbp (Detached) 

/var/folders/86/062qtcyx2rxbnmn8mtpkyghs0r0r_z/T/.screen中的5个套接字。

screen -ls | grep pts | cut -d. -f1 | awk '{print $1}' | xargs kill

杀死分离的屏幕会话(credit @ chatten):

screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill

这是一个综合所有答案的解决scheme:将其添加到.bashrc.bash_profile

 killscreens () { screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill } 
  • 这是一个方便的function,易于记忆
  • 杀死只有独立的屏幕,阻止你做一些愚蠢的事情
  • 记得打开一个新的bashterminal或者运行source .bashrc来使killscreens可用

感谢@Rose Perrone,@Milind Shah和@schatten

在你的.bash_profile中包含这个函数:

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

要运行它,请致电killd 。 这将杀死所有屏幕会话,分离或不。

如果屏幕死了,请使用:

 screen -wipe 
 '[0-9]\{3,\}' 

的情况下

 There is a screen on: 20505.blabla (03/05/2014 22:16:25) (Detached) 1 Socket in /var/run/screen/S-blabla. 

将匹配20505和2014年,退出2014年将返回“找不到屏幕会话”。

 [0-9]\{3,\}\.\S* 

可能会工作。

我总是遇到模式20505. 名称 ,其中名称是主机名或会话名称,如果屏幕是用-S标志启动的。 适用于OS X和Debian,可能不是通用的。