首页 文章

杀死所有分离的屏幕会话

提问于
浏览
46

当我执行 screen -ls 时,我看到以下内容 . 我该如何杀死所有独立的会话?

有屏幕:84918.ttys002.ros-mbp(独立式)

84944.ttys008.ros-mbp(独立式)

84970.ttys013.ros-mbp(附)

84998.ttys002.ros-mbp(独立)

85024.ttys002.ros-mbp(独立式)
/var/folders/86/062qtcyx2rxbnmn8mtpkyghs0r0r_z/T/.screen中的5个套接字 .

6 回答

  • 77

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

    杀死 only Detached 屏幕会话(credit @schatten):

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

  • 24

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

    killscreens () {
        screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
    }
    
    • 这是一个方便的功能,易于记忆

    • 只杀死分离的屏幕,阻止你做一些愚蠢的事情

    • 记得打开一个新的bash终端或运行 source .bashrc 以使 killscreens 可用

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

  • 0

    在.bash_profile中包含此函数:

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

    要运行它,请调用 killd . 这将终止所有屏幕会话,分离与否 .

  • 8

    如果屏幕已死,请使用:

    screen -wipe
    
  • 1

    将Edward Newell和Rose Perrone的解决方案整合到一个更具可读性和“屏幕”的解决方案中 .

    将以下内容添加到 .bashrc.bash_profile .

    # function for killing all detached screen sessions
    killds() {
        detached_sessions=$(screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}')
        for s in ${detached_sessions}
        do
            screen -S "${s}" -X quit;
        done
    }
    
  • 1
    '[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.name,其中如果使用-S标志启动屏幕,则name是主机名或会话名称 . 适用于OS X和Debian,可能不是通用的 .

相关问题