14

Я читал о том, как автоматически запустить экран, когда я ssh на удаленный сервер. Я хотел бы, чтобы в мой .bash_profile был добавлен простой однострочный файл, чтобы запускать screen при входе в ssh , и НЕ выходить из удаленного соединения, когда я отсоединяю экран.

Я изучал exec screen и почти все комбинации -d , -r , -D и -R и не могу понять, какие флаги мне нужны.

В идеале я ssh whatever и войти на сервер в новом screen или он может снова подключиться к старому экрану, я хотел бы знать, как сделать оба варианта, чтобы увидеть, что мне больше нравится. Затем я могу либо нажать Ctrl a d, либо Ctrl d, и он вернет меня к обычному логину ssh для этого сервера (где вы увидите motd). Оттуда я могу screen -r на любом экране или нажать Ctrl d еще раз, чтобы выйти.

5 ответов5

18

Простой screen -R должен сделать свое дело.

Чтобы убедиться в этом, я добавил screen -R в свой файл .bash_profile на удаленном сервере, вошел в систему, отсоединился от экрана и был возвращен к обычному приглашению оболочки на удаленном сервере. Проверено также .bashrc. Последующие входы в систему дали ожидаемый результат (повторное присоединение к сеансу экрана).

9

У меня были проблемы с созданием 40 каскадных сеансов экрана с некоторыми решениями при запуске нового окна или сеанса экрана. Мне удалось исключить каскадный экран и создать новый сеанс, если он не существует с этим:

if [ -z "$STY" ]; then screen -R; fi

Он проверяет, находитесь ли вы в сеансе экрана и запускает screen -R если вы этого не делаете. Без теста вы получите «Прикрепление изнутри экрана?"предупреждение с экрана каждый раз, когда вы создаете новое окно экрана.

8

Если я понимаю вашу потребность, вы должны попробовать:

if $(screen -ls | grep -q pts); then screen -x; else screen -R; fi

Он создаст только один сеанс экрана, в противном случае он будет повторно подключаться к существующему в режиме нескольких окон (даже если у вас несколько сеансов ssh, вы в конечном итоге окажетесь в одном сеансе экрана)

7

screen -RR к первому доступному сеансу или создаст его при необходимости.

0

Здесь небольшое расширение,

скрипт для проверки bashrc, если существует более одного отдельного сеанса экрана. Если есть больше, то вы должны выбрать сессию вручную. Когда есть отдельный сеанс, вы возвращаетесь к этому сеансу. Если вы выйдете из сессии, то сессия ssh тоже закроется.

 #Start Screen
 if [ -z "$STY" ]; then

 value=$( screen -ls |grep '\<pts.*Detached\>' |wc -l )

 if [ $value -gt 1 ]; then

  screen -ls

 else

  screen -R

  echo 5 Sek. bis die SSH Session beendet wird.

  echo Strg + C - um ohne screen weiter zu arbeiten.

  sleep 6

  exit

 fi

fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .