¿Volver a adjuntar o crear una sesión de pantalla con nombre? (o sesiones de pantalla persistentes)

¿Volver a adjuntar o crear una sesión de pantalla con nombre? (o sesiones de pantalla persistentes)

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 -Rbandera para screenescasiperfecto:

ssh host -t screen -R -S thesessionname

..pero si la sesión ya está adjunta, se crea una segunda sesión (simplemente -Rbusca la primera sesión separada, si no encuentra ninguna, crea una nueva)

¿Hay alguna manera de hacer que la -Rbandera busque también sesiones adjuntas y solo crear una nueva si thesessionnameno 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 -Docurre, y definitivamente no quiero el modo de conexión múltiple de -x.

información relacionada