web-dev-qa-db-ja.com

デタッチされたスクリーンセッションを強制終了する

私はどこかから分離スクリーンが殺されることができることを学びました

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

[あなたが殺したいセッション#]はどこから得ることができます

screen -ls

しかしこれはうまくいきません。何か問題がありますか?正しい方法は何ですか?

798
Tim

"kill"は一つのスクリーンウィンドウだけを殺します。セッション全体を「終了」するには、quitを使用します。

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

デッドセッションには$ screen -wipeを使います。

1146
innaM

次のようにすると、スクリーンセッション内で応答していない独立したセッションを強制終了することができます。

  1. デタッチされたスクリーンセッションを識別するためにscreen -listをタイプしてください。

    〜$ screen -list 
    上に画面があります。
     20751.Melvin_Peter_V42(独立)
    

    注:20751.Melvin_Peter_V42はあなたのセッションIDです。

  2. デタッチされたスクリーンセッションにアタッチする

    screen -r 20751.Melvin_Peter_V42
  3. セッションプレスに接続したら Ctrl + A それから:quitをタイプしてください

479
Melvin Peter

リスト画面:

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
133
nilloc

意味のある名前を指定すると、セッションを終了するのが簡単になります。

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

スクリーンセッションが格納されている場所に移動して実行するだけです。

 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にソケットが見つかりません。

43
rc2012
screen -wipe

すべての dead screenセッションを消去する必要があります。

27
Vishv Jeet

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

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

それからcleanscreenを使ってすべてのスクリーンセッションをきれいにします。

21
user2115803

私にとっては単純な

exit

動作します。これはスクリーンセッション内からです。

21

all detachedスクリーンセッションを終了するには、この関数をあなたの.bash_profileに含めてください:

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

実行するには、killdを呼び出します。

15
Rose Perrone
== 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.
7
duggi

あるいは、あなたのスクリーンセッションであなたがしなければならないのは、 exit とタイプすることだけです。

これはスクリーンによって開始されたシェルセッションを強制終了し、それはあなたがしているスクリーンセッションを事実上終了させます。

スクリーンセッションIDなどを気にする必要はありません。

5
dat789