私はどこかから、切り離された画面が殺されることができることを学びました
screen -X -S [session # you want to kill] kill
[殺したいセッション#]はどこから取得できますか
screen -ls
しかし、これは機能しません。何か問題がありますか?正しい方法は何ですか?
screen -S sessionname -p 0 -X quit
私はどこかから、切り離された画面が殺されることができることを学びました
screen -X -S [session # you want to kill] kill
[殺したいセッション#]はどこから取得できますか
screen -ls
しかし、これは機能しません。何か問題がありますか?正しい方法は何ですか?
screen -S sessionname -p 0 -X quit
回答:
「kill」は、1つの画面ウィンドウのみを強制終了します。セッション全体を「強制終了」するには、を使用しますquit
。
$ screen -X -S [session # you want to kill] quit
デッドセッションの場合:$ screen -wipe
exit
動作しますが、開かれた各画面に入力する必要があります。quit
うまくいかない
screen -X quit
で任意のターミナルに入ると、すべてのアクティブなセッションが終了します
次の操作を行うと、screenセッション内で応答していない切り離されたセッションを強制終了できます。
入力screen -list
して、切り離された画面セッションを識別します。
〜$ screen -list 次の画面があります。 20751.Melvin_Peter_V42(戸建)
注:20751.Melvin_Peter_V42
はセッションIDです。
切り離された画面セッションに接続する
画面-r 20751.Melvin_Peter_V42
セッションに接続したら、Ctrl+ Aを押してから、:quit
quit
あります(おそらく、OSまたは画面のバージョン間の違いが原因です):quit
command not found
exit
また作品
リスト画面:
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 -S
ありませんかscreen -r
?
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.
そして、それを削除してください:
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にソケットが見つかりません。
ps aux | grep screen
pidを見つけ、kill
それを削除するためにを発行しました。画面で何を実行していたかに応じて、一時ファイルとロックをクリーンアップすることもできます。
screen -wipe
すべてのデッドスクリーンセッションをクリーンアップする必要があります。
これをあなたに追加してください~/.bashrc
:
alias cleanscreen="screen -ls | tail -n +2 | head -n -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit"
次に、を使用cleanscreen
してすべての画面セッションを消去します。
screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
screen -ls | tail +2 | head -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit
私にとってはシンプル
exit
動作します。これは、screenセッション内からです。
:quit
殺すために、すべてのデタッチscreenセッションを、あなたの.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.