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 -d
conectarse 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 ~/.bashrc
incluso 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 screen
en 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, .bashrc
ya 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
.