時々、SSHシェル持つアクティブscreen
セッション私のリモートサーバーに行き、壊れた(たとえば、インターネット回線はそれほど安定していません)セッションはまだ接続されています。
その後、SSHを介してサーバーに再接続し、復元しよう会議screen
:
luis@Zarzamoro:~$ screen -r
There is a screen on:
9166.pts-2.Zarzamoro (12/23/15 23:47:34) (Attached)
There is no screen to be resumed.
luis@Zarzamoro:~$ screen -r 9166.pts-2.Zarzamoro
There is a screen on:
9166.pts-2.Zarzamoro (12/23/15 23:47:34) (Attached)
There is no screen to be resumed matching 9166.pts-2.Zarzamoro.
私はGNU画面についてはわかりません。なぜこのようなことが起こりますか?
可能ですか?また覆うこのscree
n会議?
答え1
使用:
screen -r -d <pid>.<tty>.<host>
あなたの場合:
screen -r -d 9166.pts-2.Zarzamoro
これにより、反対側の画面が強制的に切り離され、接続されます。
答え2
答え3
このようなことが時々私に起こります。私はあなたのttyが画面から適切に分離されていないので、サーバーに再接続してもまだ画面に「接続」されていると思います。
これが私がしたことです:
screen -d
screen -r (if you have only one screen)
screen -r <pid> (if you have more than one screen)
あなたもできます。
screen -r -d (add <pid> if you have more than one screen)
正しく接続されていない画面を取り外して再接続してください。
また、このときscreen -r
全画面の名前を指定する必要なく、pid(4桁)のみ指定することができます。
答え4
以下のように自動化することもできます。ここ既存のスクリーンセッションに自動的に再接続されます(存在しない場合は新しいセッションを作成します)。
.bashrc
ターゲットホストの ~/.bashrc の上部に次の行を追加します。
# Auto-screen invocation. see: http://taint.org/wk/RemoteLoginAutoScreen
# if we're coming from a remote SSH connection, in an interactive session
# then automatically put us into a screen(1) session. Only try once
# -- if $STARTED_SCREEN is set, don't try it again, to avoid looping
# if screen fails for some reason.
if [ "$PS1" != "" -a "${STARTED_SCREEN:-x}" = x -a "${SSH_TTY:-x}" != x ]
then
STARTED_SCREEN=1 ; export STARTED_SCREEN
[ -d $HOME/lib/screen-logs ] || mkdir -p $HOME/lib/screen-logs
sleep 1
screen -RR && exit 0
# normally, execution of this rc script ends here...
echo "Screen failed! continuing with normal bash startup"
fi
# [end of auto-screen snippet]