60

を実行する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 つのソケット。

4

6 に答える 6

98

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

Detached screen セッションのみを強制終了します (credit @schatten) :

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

于 2013-06-20T03:58:54.173 に答える
28

すべての答えを組み合わせたソリューションを次に示します。これを.bashrcorに追加します.bash_profile

killscreens () {
    screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
}
  • 覚えやすい便利な機能です
  • 切り離された画面のみを強制終了して、愚かなことをしないようにします
  • 新しいbashターミナルを開くか、実行source .bashrcしてkillscreens利用可能にすることを忘れないでください

@Rose Perrone、@Milind Shah、@schatten に感謝します。

于 2014-05-12T17:16:08.063 に答える
10

この関数を .bash_profile に含めます。

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

実行するには、 を呼び出しますkilld。これにより、分離されているかどうかに関係なく、すべての画面セッションが強制終了されます。

于 2013-01-21T21:00:04.547 に答える
2

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
}
于 2019-03-20T15:27:14.057 に答える
0
'[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 を終了すると「No screen session found」が返されます。

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

動作する可能性があります。

私は常にパターン 20505. nameに遭遇しました。 nameは、ホスト名または screen が -S フラグで起動された場合のセッション名です。OS X および Debian で動作しますが、普遍的ではない可能性があります。

于 2014-05-03T20:28:55.757 に答える