web-dev-qa-db-ja.com

すべての画面を強制終了するにはどうすればよいですか?

誤って1000以上の画面を作成しました。 1つのコマンドでそれらすべてをどのように殺すのですか? (またはいくつか)

87
BrainStone

使用できます:

pkill screen

または

killall screen

OSXでは、プロセスはすべて大文字でSCREENと呼ばれます。だから、使用:

pkill SCREEN

または

killall SCREEN
109
Rahul Patil

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

screen -wipe
15
Adam_G

最近、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コマンドを実行します。

8
Eliassen
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 
6
Don Wei

1000個の「スクリーン」を作成する方法に少し戸惑いました。 1000スクリーンウィンドウ(1つのスクリーンセッション内の1000の異なるターミナルウィンドウ)を意味しているのでしょうか?

1つの画面セッション内に1000個のウィンドウがある場合、よりエレガントな解決策は、コマンドC-a \(ctrl-aの後に\)を使用して画面を終了することです。

2
Railgun2

次のコマンドは、すべての非アクティブな画面を終了します。

Perl -e 'while (map { kill 9, [split /\./]->[0] } grep { /Detached/ } split /\n/, qx{screen -ls}) { sleep 1 } exec qw(screen -wipe)'
1
Michael Vu
for scr in $(screen -ls | awk '{print $1}'); do screen -S $scr -X kill; done
0
user370823