Назад | Перейти на главную страницу

Подключить повторно или создать именованный сеанс экрана? (или постоянные сеансы экрана)

В основном у меня есть сеанс удаленного экрана, к которому я хочу автоматически подключиться. В настоящее время я делаю это с помощью следующей команды (как закладка iTerm или псевдоним)

ssh host -t screen -x thesessionname

Это работает нормально, но если сеанс по какой-либо причине умирает, я бы хотел, чтобы он был воссоздан при следующем подключении. В -R флаг для screen является почти идеальный:

ssh host -t screen -R -S thesessionname

..но если сеанс уже подключен, создается второй сеанс (как -R просто ищет первый отдельный сеанс, если его не найти, он создает новый)

Есть ли способ сделать -R flag также искать подключенные сеансы и создавать новые только в том случае, если thesessionname не существует?

Если это нелегко сделать, как я могу автоматически воссоздать сеанс экрана, когда он умирает? Возможно, скрипт, запускаемый через cron, который ищет названный сеанс и создает его, если он не существует?

Скажите screen, чтобы он пытался настойчивее:

-D -R
    Attach here and now. In detail this means: If a session is run-
    ning,  then  reattach.  If necessary detach and logout remotely
    first.  If it was not running create it and  notify  the  user.
    This is the author's favorite.

Итак, объедините их, и вы получите свое решение («-DR» эквивалентно «-D -R»):

screen -DR <yoursession> 

Кроме того, что полезно знать, вы можете просматривать текущие сеансы с помощью:

screen -ls

Несколько хороших вариантов. Во-первых, мои любимые:

screen -x -R

Это будет прикреплено к первому доступному сеансу экрана (совместное использование, если подключено другое соединение), и если сеансов экрана вообще нет, начните новый.

screen -d -RR

В документах для этого говорится: «Подключите сеанс повторно и при необходимости отсоедините или создайте его. Используйте первый сеанс, если доступно более одного сеанса». По сути, двойной R заставляет искать первую сессию, к которой нужно подключиться.

screen -D -RR

«Прикрепите здесь и сейчас. Что бы это ни значило, просто сделайте это». Отсоединит и удаленно выйдет из любых других подключенных сеансов и подключится к первому сеансу, который может. По сути, делает все, что нужно для подключения к существующему сеансу, и создает новый, если там ничего нет.

Самый первый (-x -R) с наименьшей вероятностью вызовет проблемы (не отсоединит ваше другое соединение), но просто всегда прикрепляется к чему-то, если есть к чему прикрепляться, и создает что-то, если не к чему прикрепляться.

я использую

screen -dRRS sessname

Я не хочу, чтобы весь мой логин в другой оболочке сбрасывался, например -D делает, и мне определенно не нужен режим с несколькими подключениями -x.