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

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

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

ssh host -t screen -x thesessionname

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

ssh host -t screen -R -S thesessionname

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

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

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

решение1

Попросите экран быть немного настойчивее в попытках:

-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

решение2

Несколько хороших вариантов. Сначала мой любимый:

screen -x -R

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

screen -d -RR

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

screen -D -RR

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

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

решение3

я использую

screen -dRRS sessname

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

Связанный контент