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のソケット。
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
すべての答えを組み合わせたソリューションを次に示します。これを.bashrc
または.bash_profile
:
killscreens () {
screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
}
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
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
}
'[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で動作しますが、普遍的ではないかもしれません。