誤って1000以上の画面を作成しました。 1つのコマンドでそれらすべてをどのように殺すのですか? (またはいくつか)
使用できます:
pkill screen
または
killall screen
OSXでは、プロセスはすべて大文字でSCREENと呼ばれます。だから、使用:
pkill SCREEN
または
killall SCREEN
画面が表示されない場合は、次を使用します。
screen -wipe
最近、awkに慣れるようになりました。これをまとめると、その目的に役立ちました。わかりやすいので投稿しました。
screen -ls | grep '(Detached)' | awk 'sys {screen -S $1 -X quit}'
screen -ls
には、現在のすべての画面がリストされます。 grep 'pattern'
は、一致するすべての行を除外します。次に、切り離されたすべての画面のハンドルを取得し、awk sys {command}
を使用してコマンドをコピーして貼り付け、sys
を使用して実行できます。$1
は、awkによって取得された最初の引数を参照します。最後に、screen -X quit
を指定してquitコマンドを実行します。
str=$(screen -ls)
array=$(echo $str|tr "." "\n")
for V in $array
do
if [ $V -gt 0 ]
then screen -S $V -X quit
fi
done
1000個の「スクリーン」を作成する方法に少し戸惑いました。 1000スクリーンウィンドウ(1つのスクリーンセッション内の1000の異なるターミナルウィンドウ)を意味しているのでしょうか?
1つの画面セッション内に1000個のウィンドウがある場合、よりエレガントな解決策は、コマンドC-a \
(ctrl-aの後に\)を使用して画面を終了することです。
次のコマンドは、すべての非アクティブな画面を終了します。
Perl -e 'while (map { kill 9, [split /\./]->[0] } grep { /Detached/ } split /\n/, qx{screen -ls}) { sleep 1 } exec qw(screen -wipe)'
for scr in $(screen -ls | awk '{print $1}'); do screen -S $scr -X kill; done