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


76

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


3
実行->screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
sactiw

@sactiwをお勧めします。名前付きセッションで動作するように変更し、コマンドを好みに合わせて少し調整し、自分のように「スタック」している場合にセッションを完全にscreen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
消去

3
誤って1000個のスクリーンを作成したのはどうしてですか?
duhaime

回答:


95

以下を使用できます。

pkill screen

または

killall screen

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

pkill SCREEN

または

killall SCREEN

2
この場合、SIGKILLの使用は推奨されません。SIGTERMの方がはるかに良い選択です。
マルコ

こんにちは、Rahul Patil。画面が表示されない理由Top
-user15964

権限がない場合はどうなりますか?すべての画面に個別に手動で出入りする必要がありますか?
hipoglucido

13

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

screen -wipe

6
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 

5

最近、私はこれをまとめたawkに慣れ始めました。わかりやすいので投稿しました。

screen -ls | grep '(Detached)' | awk 'sys {screen -S $1 -X quit}'

Where screen -lsは、現在のすべての画面をリストします。 grep 'pattern'一致するすべての行を除外します。次に、すべての切り離された画面のハンドルを取得awk sys {command}し、コマンドをコピーして貼り付けて実行します。これはsys$1awkによって選択された最初の引数を参照します。最後に、でquitコマンドを実行しscreen -X quitます。


1
screen -ls | grep '(Detached)' | awk '{print $1}' | xargs -I % -t screen -X -S % quit 私にとってはうまくいった。
whereisalext

2

1000個の「スクリーン」をどのように作成したかについて少し戸惑っています。おそらく1000個の画面ウィンドウ(1つの画面セッション内で1000個の異なる端末ウィンドウ)を意味しましたか?

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


1
画面内で画面1000xを実行してみてください。何が起こるのですか?1000個の画面ウィンドウが表示されます。はい、そうです、画面はインテリジェントかつ慈悲深く1000画面のセッションを生成しません。したがって、OPが既に画面を開始していた場合、1000画面のセッションを開始するよりも誤って1000画面のウィンドウを開始する方がはるかに簡単です。
レイルガン2

奇妙だが、私が返信していたコメントは消えたようだ。とにかく、私は上記のコメントを記録に任せています。
レイルガン2

1
まあそれは実際には非常に簡単です。(偶然に)無限ループを作り、そこにこのようなものを入れてくださいscreen -m sleep 100000。これは起こり、すでに1000を超えるスクリーンセッションが作成されるまで気が付きませんでした。
BrainStone

0

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

perl -e 'while (map { kill 9, [split /\./]->[0] } grep { /Detached/ } split /\n/, qx{screen -ls}) { sleep 1 } exec qw(screen -wipe)'

0
for scr in $(screen -ls | awk '{print $1}'); do screen -S $scr -X kill; done
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.