Básicamente, tengo una sesión de pantalla remota, a la que deseo volver a conectar automáticamente. Actualmente estoy haciendo esto con el siguiente comando (como un marcador de iTerm o un alias)
ssh host -t screen -x thesessionname
Esto funciona bien, pero si la sesión finaliza por cualquier motivo, me gustaría que se vuelva a crear la próxima vez que me conecte. La -R
bandera para screen
escasiperfecto:
ssh host -t screen -R -S thesessionname
..pero si la sesión ya está adjunta, se crea una segunda sesión (simplemente -R
busca la primera sesión separada, si no encuentra ninguna, crea una nueva)
¿Hay alguna manera de hacer que la -R
bandera busque también sesiones adjuntas y solo crear una nueva si thesessionname
no existe?
Si esto no es fácil de hacer, ¿cómo podría recrear automáticamente la sesión de pantalla cuando finalice? ¿Quizás un script ejecutado a través de cron que busca la sesión nombrada y la crea en caso de que no exista?
Respuesta1
Dile a la pantalla que sea un poco más persistente al intentar:
-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.
Así que combine los dos y debería tener su solución ("-DR" es equivalente a "-D -R"):
screen -DR <yoursession>
Además, y es útil saberlo, puedes ver las sesiones en ejecución con:
screen -ls
Respuesta2
Algunas buenas opciones. Primero, mi favorito:
screen -x -R
Esto se adjuntará a la primera sesión de pantalla disponible (se compartirá si hay otra conexión conectada) y, si no hay ninguna sesión de pantalla, comenzará una nueva.
screen -d -RR
Los documentos para eso dicen "Vuelva a conectar una sesión y, si es necesario, sepárela o créela. Utilice la primera sesión si hay más de una sesión disponible". Básicamente, la doble R hace que busque la primera sesión a la que conectarse.
screen -D -RR
"Adjunte aquí y ahora. Sea lo que sea que eso signifique, simplemente hágalo". Se desconectará y cerrará sesión de forma remota en cualquier otra sesión adjunta y se conectará a la primera sesión que pueda. Básicamente, hace lo que sea necesario para conectarse a una sesión existente y crea una nueva si no hay nada allí.
El primero (-x -R) es el que tiene menos probabilidades de causar problemas (no desconectará la otra conexión), pero simplemente siempre se conecta a algo si hay algo a lo que conectarse y crea algo si no hay nada a lo que conectarse.
Respuesta3
yo suelo
screen -dRRS sessname
No quiero que se elimine todo mi inicio de sesión en el otro shell, como -D
ocurre, y definitivamente no quiero el modo de conexión múltiple de -x
.