Aunque esto no sea una respuesta directa a su pregunta, está muy relacionada con el problema que tiene. En lugar de tratar de mantener viva la conexión (todas las conexiones eventualmente mueren) puede usar multiplexores de terminal, como screen
y tmux
que mantienen la sesión viva en segundo plano, incluso si su terminal se desconecta.
Esencialmente, cuando inicia sesión en el servidor SSH, ejecuta inmediatamente screen
lo que creará y adjuntará una nueva sesión:
$ screen
Luego continúas y haces tu trabajo con el shell como lo harías normalmente. Ahora, si se corta la conexión, cuando pueda volver a conectarse y volver a conectarse al servidor a través de SSH, obtendrá una lista de las sesiones actuales con:
$ screen -ls
Para volver a adjuntar a una sesión:
$ screen -r <session>
donde <session>
está el PID o el nombre de una sesión. ¡Volverá a conectarse a su sesión y podrá continuar desde donde lo dejó!
Incluso puedes separar la sesión y volver a conectarte desde casa para continuar desde el punto exacto donde lo dejaste. Para separar la sesión que usa C-a
seguido de C-d
(eso Control + A
y luego Control + D
).
También hay un sencillo tutorial en línea .
Usar screen
y tmux
en servidores remotos se considera una práctica recomendada y es muy recomendable . Algunas personas llegan a tener screen
su shell de inicio de sesión predeterminado, por lo que cuando se conectan, comienzan inmediatamente una nueva screen
sesión.