スクリーンセッションを終了する


65

スクリーンセッションを強制終了しようとしています。他の多くの関連する質問に気づきましたが、それらの答えのどれも私のために機能していません。次のセッションを強制終了しようとしています。

screen -ls
There is a screen on:
    23520.pts-6.porkypig    (09/30/2013 02:49:47 PM)    (Detached)
1 Socket in /var/run/screen/S-root.

screen -r 23520.pts-6.porkypig

今はセッション中です。ドキュメントによると:

http://www.gnu.org/software/screen/manual/screen.html#Quit

「control a」を押してから「control \」を押すことになっています。私はそれを行い、何も起こりません。

別のソリューションでは、Ctrl+ を押してa:quitと入力するように言われました。ただし、やはり何もしません。実際、control+を押すとa、「他のウィンドウはありません」というメッセージを除いて、その後はまったく何も起こりません


1
画面v4.xで、すべてのセッションを強制終了しますps aux | grep "SCREEN" | awk '{print $2}' | xargs kill
フレドリックガウス14年

2
レコードについては、文字列全体を含めるscreen -r porkypig必要screen -r 23520はなく、単にまたはを実行できます。スクリーン名は物事を簡単にするためのものであり、より複雑ではありません。
ミッケル

回答:


73

最初に、行ったとおりにスクリーンセッションに再アタッチする必要があり
screen -r 23520ます。次に、ctrl+ aを押し、次に大文字Kを押しy、セッションを強制終了するかどうかを尋ねられたら押します


2
これは、画面内で実行されているプロセスに問題がある場合に機能しますが、画面自体に問題がある場合には機能しません。これは99%の場合であり、すべてのウィンドウを終了するのではなく、画面内の1つのウィンドウのみに影響するという追加の利点があります。
ミッケル

1
セッションではなくウィンドウ
Eric Wang

53

添付せずにその画面を終了できます。まず、そのセッションを見つけます:

$ screen -ls

そして、それをやめる:

$ screen -XS [session # you want to quit] quit

(-X =コマンドの実行、実行する-SセッションPID)

[更新]

例:

screen -XS 20411 quit

1
これは非常に簡単でした。-X -Sと-XS
AJ

2
あなたは、クレジットを与えるべきinnaM答え、あなたがそれをコピーした場合
マーティン・トーマに

8

これにより、すべての切り離された画面が強制終了されます。

画面-ls | 分離されたgrep | カット-d。-f1 | awk '{print $ 1}' | xargs kill

これにより、すべての画面がアタッチまたはデタッチされます

画面-ls | grep pts | カット-d。-f1 | awk '{print $ 1}' | xargs kill

7

そのため、これらすべての公式提案で、より簡単で、同じように効果的で、より簡単なものを探しましょう。

pkill screen

誰もがほとんど覚えていないかもしれないいくつかのコマンドを押すためだけに、未知の不要な画面に移動したいですか?これは、それに入ることをまったく避け、すぐにそれを殺します。

さらに、1つ以上ある場合は、これらすべてが一挙に行われます。


1
これにより、実行中のすべての画面が強制終了されることに注意してください。
ミッケル

良い選択ではありません。私はしばらくそれをやってきた。時々、それは悪い振る舞いを引き起こします(例えば、ユーザーアカウントからすぐにログアウトする)。また、@ Mikkelが述べたように、すべての画面を閉じる可能性がありますが、これは望んでいないことです。場合によっては、一部を実行し続ける必要があり(たとえば、一部はシステムによって実行されている)、他の画面を停止する必要があります。
MAChitgarha

2

画面を更新するときにこの問題が発生しました。screen関係なく、どのように多くの、セッションを再接続しようとすると、コマンドがハングアップする-Dか、-R私はコマンドに追加しました。ただし、screen -lsセッションのpidを便利に提供するため、次を使用して介入できます。

10:42 user ~ $ screen -ls
There is a screen on:
        5730.my_screen     (Detached)
1 Socket in /tmp/screens/S-user.

10:42 user ~ $ sudo kill 5730

10:43 user ~ $ screen -ls
No Sockets found in /tmp/screens/S-user.

(これはブライアントーマスの答えに似ていますが、彼は実行中のすべてのスクリーンセッションを強制終了します。


6時間インターネットを介して私の頭を壊した後...あなたの唯一の答えが働いた。相棒、ありがとな!
kRazzy R

1

あなたのように、私はスクリーンセッションを終了したかったのですが、ドキュメントは役に立たないことがわかりました。キーボードショートカットが必要であると確信して、
ctrl + aそれが\
機能することがわかりました

その後、「すべてのウィンドウを本当に終了して強制終了する[y \ n]」というプロンプトが表示されます。

ドキュメントは言う私はなぜわからないctrl + a、その後ctrl + \。それは私には何もしません。


1

接続された実行中の画面のプロセスIDを見つけることができます。コマンドで取得できるセッションIDと同じであることがわかりました:
screen -ls
そして、次のコマンドを使用してそのプロセスを強制終了できます:
kill [sessionId]または
sudo kill [sessionId]
、他のターミナルウィンドウに接続されている場合でも画面を強制終了できます。


0

ctrl + dを押して、画面ウィンドウを強制終了します。すべての画面ウィンドウを強制終了するまでこれを繰り返します。すべてのウィンドウ画面を使い果たすと、セッションが終了して終了します。多くのウィンドウがない場合の最短の解決策

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