SSHログイン中の自動実行画面の問題

SSHログイン中の自動実行画面の問題

私が見ています。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」という名前の画面セッションを接続(または作成)し、画面が正常に戻った後に終了しないでください。

関連情報