В основном у меня есть сеанс удаленного экрана, к которому я хочу автоматически подключиться. В настоящее время я делаю это с помощью следующей команды (как закладка 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
.