Anche se questa non è una risposta diretta alla tua domanda, è altamente correlata al problema che hai. Invece di cercare di mantenere viva la connessione (tutte le connessioni alla fine muoiono) puoi usare multiplexor di terminale, come screen
e tmux
che mantengono viva la sessione in background anche se il tuo terminale si disconnette.
Essenzialmente quando ti connetti al server SSH esegui immediatamente screen
che creerà e collegherà una nuova sessione:
$ screen
Poi vai avanti e fai il tuo lavoro con la shell come faresti normalmente. Ora, se la connessione cade, quando potete tornare online e riconnettervi al server tramite SSH, otterrete un elenco delle sessioni correnti con:
$ screen -ls
Per riconnettersi a una sessione:
$ screen -r <session>
dove <session>
è il PID o il nome della sessione. Sarai ricollegato alla tua sessione e potrai continuare da dove hai lasciato!
Puoi anche staccare la sessione e riconnetterti da casa per riprendere dal punto esatto in cui hai lasciato. Per staccare la sessione si usa C-a
seguito da C-d
(cioè Control + A
e poi Control + D
).
C'è anche un semplice tutorial online .
Usare screen
e tmux
sui server remoti è considerato una migliore pratica ed è altamente raccomandato. Alcune persone arrivano al punto di avere screen
come shell di default per il login, così quando si connettono iniziano immediatamente una nuova sessione screen
.