切り離された画面セッションを終了する[終了]


864

私はどこかから、切り離された画面が殺されることができることを学びました

screen -X -S [session # you want to kill] kill

[殺したいセッション#]はどこから取得できますか

screen -ls

しかし、これは機能しません。何か問題がありますか?正しい方法は何ですか?


25
「どこか」は常に良い情報源であるとは限りません。「man screen」を試してください。
2009年

27
正しいコマンドはscreen -S sessionname -p 0 -X quit
次のとおり

killall-#screen [#=殺したいスクリーンの数]
CArnold

私は単に出口を
TPArrow 2018

画面上でのCTRL + Dは最も簡単なコマンドです。
ドンキング

回答:


1267

「kill」は、1つの画面ウィンドウのみを強制終了します。セッション全体を「強制終了」するには、を使用しますquit

$ screen -X -S [session # you want to kill] quit

デッドセッションの場合:$ screen -wipe


112
ubuntuで「exit」(引用符なし)と入力します:P
mzalazar

16
exit動作しますが、開かれた各画面に入力する必要があります。quitうまくいかない
kapad 2013

4
@kapadは、インラインで書き込むと実際に機能します-X -S pid / sockname quit
Eduard

20
OSX screen -X quitで任意のターミナルに入ると、すべてのアクティブなセッションが終了します
ミシェル

5
Ctrl + Dも機能します
Yi Xin

499

次の操作を行うと、screenセッション内で応答していない切り離されたセッションを強制終了できます。

  1. 入力screen -listして、切り離された画面セッションを識別します。

    〜$ screen -list  
        次の画面があります。  
             20751.Melvin_Peter_V42(戸建)  
    

    注:20751.Melvin_Peter_V42はセッションIDです。

  2. 切り離された画面セッションに接続する

    画面-r 20751.Melvin_Peter_V42
  3. セッションに接続したら、Ctrl+ Aを押してから、:quit


20
フルネームなしでscreen -r 20751を使用することができます
Gal Bracha

53
または:Ctrl + a、k
laffuste 2013年

@laffusteのコメントは私にとってはうまくいきましたが、リモートLinuxサーバーにつながる可能性がquitあります(おそらく、OSまたは画面のバージョン間の違いが原因です):quitcommand not found
Hack-R

画面に添付たら、exitまた作品
PankajKabra

145

リスト画面:

screen -list

出力:

There is a screen on:
23536.pts-0.wdzee       (10/04/2012 08:40:45 AM)        (Detached)
1 Socket in /var/run/screen/S-root.

画面セッションを強制終了:

screen -S 23536 -X quit

1
「screen -ls」も機能します。;)
Atul Vaibhav

113

意味のある名前を付けると、セッションを強制終了する方が簡単です。

//Creation:
screen -S some_name proc
// Kill detached session
screen -S some_name -X quit

なぜscreen -Sありませんかscreen -r
43Tesseracts 2017

1
この回答では、セッションの名前を使用しています。これは、IDを調べるよりもはるかに便利です。ありがとうございました!
ポールケンジョラ

43

screenセッションが格納されている場所に移動して実行できます。

 screen -ls

その結果

 There is a screen on:
         26727.pts-0.devxxx      (Attached)
 1 Socket in /tmp/uscreens/S-xxx. <------ this is where the session is.

そして、それを削除してください:

  1. cd / tmp / uscreens / S-xxx
  2. ls
  3. 26727.pts-0.devxxx
  4. rm 26727.pts-0.devxxx
  5. ls

uscreensディレクトリはありません26727.pts-0.devxxxもうそれでファイルを。次のように入力してください:

screen -ls

そしてあなたは得るべきです:

/ tmp / uscreens / S-xxxにソケットが見つかりません。


4
これは、画面が「スタック」している場合に機能する唯一のソリューションです。死んではいませんが、付けられません。
redreinard、2015

これは画面が完全にロックされているときに役立ちましたが、実際のプロセスを見つけて強制終了する必要もありました。ps aux | grep screenpidを見つけ、killそれを削除するためにを発行しました。画面で何を実行していたかに応じて、一時ファイルとロックをクリーンアップすることもできます。
Lomky

29
screen -wipe

すべてのデッドスクリーンセッションをクリーンアップする必要があります。


11
死んだとはどういう意味ですか?プログラムを実行していませんか?
Shihao Xu 2016

1
@ShihaoXu Deadは、セッションに到達できず、ローカルホスト上にある(ソケット接続が切断されている)ことを意味します。-gnu.org/software/screen/manual/screen.htmlを
iBaff

23

これをあなたに追加してください~/.bashrc

alias cleanscreen="screen -ls | tail -n +2 | head -n -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit"

次に、を使用cleanscreenしてすべての画面セッションを消去します。


11
簡単なワンライナー:screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
アリエル14

3
御馳走はうまくいきましたが、OSXで動作するように少し変更する必要がありました: screen -ls | tail +2 | head -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit
Jonathan

わずかな改善:-screen -ls | grep添付| カット-d。-f1 | awk '{print $ 1}' | xargs -I {} screen -d {}
Abhay Yadav


16

殺すために、すべてのデタッチscreenセッションを、あなたの.bash_profileでこの機能を含めます:

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

実行するには、 killd


5
5桁ではないことがあるので、次のように使用します。}
Kostyantyn

7
== ISSUE THIS COMMAND
[xxx@devxxx ~]$ screen -ls


== SCREEN RESPONDS
There are screens on:
        23487.pts-0.devxxx      (Detached)
        26727.pts-0.devxxx      (Attached)
2 Sockets in /tmp/uscreens/S-xxx.


== NOW KILL THE ONE YOU DONT WANT
[xxx@devxxx ~]$ screen -X -S 23487.pts-0.devxxx kill


== WANT PROOF?
[xxx@devxxx ~]$ screen -ls
There is a screen on:
        26727.pts-0.devxxx      (Attached)
1 Socket in /tmp/uscreens/S-xxx.

それは単にソケットを削除するのではなく、その背後にあるプロセスを強制終了しないのですか?
マーティンC.

この方法はゾンビプロセスの作成の観点から危険ですか?
Fedir RYKHTIK、2012年

5

または、スクリーンセッション中にexitと入力するだけです。

これにより、画面によって開始されたシェルセッションが強制終了され、現在実行中の画面セッションが効果的に終了します。

画面のセッションIDなどを気にする必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.