web-dev-qa-db-ja.com

すべての切り離されたスクリーンセッションを強制終了する

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) 

5 /var/folders/86/062qtcyx2rxbnmn8mtpkyghs0r0r_z/T/.screenのソケット。

47
Rose Perrone

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

キルデタッチのみスクリーンセッション(クレジット@schatten):

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

79
Milind Shah

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

killscreens () {
    screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
}
  • これは便利な機能で、覚えやすい
  • 切り離された画面だけを殺し、あなたが愚かなことをするのを止める
  • 新しいbashターミナルを開くか、source .bashrckillscreensを利用可能にする

@ Rose Perrone、@ Milind Shah、@ schattenに感謝

24
Edward Newell

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

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

実行するには、killdを呼び出します。これにより、デタッチされているかどうかにかかわらず、すべてのスクリーンセッションが強制終了されます。

8
Rose Perrone

画面が表示されない場合は、次を使用します。

screen -wipe
1
TransientObject

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
Joseph Carmack
'[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、ここでnameは画面が-Sフラグで起動された場合のホスト名またはセッション名。 OS XとDebianで動作しますが、普遍的ではないかもしれません。

0
kroko