¿Es una buena idea poner "screen -r" en mi .bashrc?

¿Es una buena idea poner "screen -r" en mi .bashrc?

Me gustaría usar screen para mantener vivas las sesiones ssh en mi servidor. Sería bueno si pudiera reanudar automáticamente cualquier sesión en ejecución para mi usuario cuando inicio sesión. La forma más sencilla de hacerlo sería agregar "screen -r" a mi .bashrc, y esto parece funcionar bien. Sólo me pregunto si esto romperá algo en condiciones que aún no he probado. ¿Alguien con experiencia aquí que pueda decirme si esto es lo que debo hacer?

Respuesta1

Debe screen -R -dconectarse automáticamente a una sesión existente, si existe, y crear una sesión en caso contrario.

Asegúresesolo haz esto en shells interactivos. Fuentes Bash ~/.bashrcincluso para shells no interactivos cuando su proceso principal es rshd o sshd (esto se menciona en la documentación, pero es fácil pasarlo por alto). Se puede decir que un shell es interactivo porque $-contiene i.

case $- in
  *i*) screen -Rd;;
esac

Esto no le permitirá ejecutar fácilmente diferentes sesiones de pantalla en diferentes terminales.

Deberá desconectarse de la pantalla y luego salir del shell principal para cerrar sesión. Esto se puede resolver usando exec screenen lugar de screen.

Si inicia un shell que no sea un shell de inicio de sesión, aparecerá la pantalla, que no es lo que desearía la mayor parte del tiempo. Al menos restringiría esto a cuando estás ejecutando directamente en una sesión ssh interactiva, con algo como lo siguiente en tu ~/.bash_profile:

case "/$(ps -p $PPID -o comm=)" in
  */sshd) screen -R -d;;
esac

Tenga cuidado cuando haga cosas complejas con su, .bashrcya que un error que hace que el shell se cierre dificultaría el inicio de sesión.


Lo que yorecomendares no modificar los archivos de inicialización de shell en el servidor, sino ejecutar la pantalla explícitamente desde el cliente, como en

ssh -t host.example.com screen -R -d

(Probablemente crearía un alias de shell o un acceso directo al entorno de escritorio en el cliente). De esa manera, puede elegir fácilmente no ejecutar la pantalla, especificar un nombre de sesión alternativo, etc.

Respuesta2

Los scripts de inicio de su servidor X a menudo inician un nuevo shell, por ejemplo, si inicia sesión usando gdm usando la "Sesión definida por el usuario".

Creo que cualquier cosa que no salga podría hacer que el inicio de X se cuelgue. Eso incluiría screen -r.

información relacionada