私が見ています。http://taint.org/wk/RemoteLoginAutoScreenSSH経由でログインすると、自動的にスクリーンセッションが開始されるようにサーバーを設定します。
私の.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]
問題は、常にRailsアプリケーションサーバーを実行する別の名前付きスクリーンセッションがあることです。ログインすると、このセッションに移動します。
名前や他の値でセッションを選択しないように上記のコードを変更できますか?分離されたセッションが唯一の画面セッションの場合は、新しい画面セッションを開始したいと思います。
私が持っているもう1つの問題は、分離時にスクリーンセッションを終了するのではなく、SSH接続を完全に終了することです。
答え1
次に変更してください。
if [ -z "$STARTED_SCREEN" ] && [ -n "$SSH_TTY" ]
then
case $- in
(*i*)
STARTED_SCREEN=1; export STARTED_SCREEN
mkdir -p -- "$HOME/lib/screen-logs"
screen -RR -S main ||
echo >&2 "Screen failed! continuing with normal bash startup"
esac
fi
つまり、別の画面セッションの代わりに「main」という名前の画面セッションを接続(または作成)し、画面が正常に戻った後に終了しないでください。