私はどこかから分離スクリーンが殺されることができることを学びました
screen -X -S [session # you want to kill] kill
[あなたが殺したいセッション#]はどこから得ることができます
screen -ls
しかしこれはうまくいきません。何か問題がありますか?正しい方法は何ですか?
"kill"は一つのスクリーンウィンドウだけを殺します。セッション全体を「終了」するには、quit
を使用します。
$ screen -X -S [session # you want to kill] quit
デッドセッションには$ screen -wipeを使います。
次のようにすると、スクリーンセッション内で応答していない独立したセッションを強制終了することができます。
デタッチされたスクリーンセッションを識別するためにscreen -list
をタイプしてください。
〜$ screen -list 上に画面があります。 20751.Melvin_Peter_V42(独立)
注:20751.Melvin_Peter_V42
はあなたのセッションIDです。
デタッチされたスクリーンセッションにアタッチする
screen -r 20751.Melvin_Peter_V42
セッションプレスに接続したら Ctrl + A それから:quit
をタイプしてください
リスト画面:
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
意味のある名前を指定すると、セッションを終了するのが簡単になります。
//Creation:
screen -S some_name proc
// Kill detached session
screen -S some_name -X quit
スクリーンセッションが格納されている場所に移動して実行するだけです。
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.
そしてそれを削除してください。
cd/tmp/uscreens/S-xxx
ls
26727.pts-0.devxxx
rM 26727.pts-0.devxxx
ls
uscreens
ディレクトリには26727.pts-0.devxxx
ファイルがもう含まれません。念のため、これを入力してください。
screen -ls
そしてあなたは得るべきです:
/ tmp/uscreens/S-xxxにソケットが見つかりません。
screen -wipe
すべての dead screenセッションを消去する必要があります。
これをあなたの~/.bashrc
に追加してください:
alias cleanscreen="screen -ls | tail -n +2 | head -n -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit"
それからcleanscreen
を使ってすべてのスクリーンセッションをきれいにします。
私にとっては単純な
exit
動作します。これはスクリーンセッション内からです。
all detachedスクリーンセッションを終了するには、この関数をあなたの.bash_profileに含めてください:
killd () {
for session in $(screen -ls | grep -o '[0-9]\{5\}')
do
screen -S "${session}" -X quit;
done
}
実行するには、killd
を呼び出します。
== 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.
あるいは、あなたのスクリーンセッションであなたがしなければならないのは、 exit とタイプすることだけです。
これはスクリーンによって開始されたシェルセッションを強制終了し、それはあなたがしているスクリーンセッションを事実上終了させます。
スクリーンセッションIDなどを気にする必要はありません。