Mesmo que essa não seja uma resposta direta à sua pergunta, ela está altamente relacionada ao problema que você tem. Em vez de tentar manter a conexão ativa (todas as conexões acabam), você pode usar multiplexadores de terminal, como screen
e tmux
que mantêm a sessão ativa em segundo plano, mesmo que seu terminal seja desconectado.
Essencialmente, ao fazer login no servidor SSH, você executa imediatamente o screen
que criará e anexará uma nova sessão:
$ screen
Em seguida, prossiga e faça seu trabalho com o shell como faria normalmente. Agora, se a conexão cair, quando você puder voltar a ficar online e reconectar-se ao servidor por SSH, você verá uma lista das sessões atuais:
$ screen -ls
Para reconectar a uma sessão:
$ screen -r <session>
onde <session>
é o PID ou o nome da sessão. Você será reconectado à sua sessão e poderá continuar de onde parou!
Você pode até desconectar a sessão e reconectar-se de casa para pegar o ponto exato em que parou. Para desanexar a sessão que você usa, é C-a
seguido por C-d
( Control + A
depois e depois Control + D
).
Também existe um tutorial online simples .
Usar screen
e tmux
em servidores remotos é considerado uma prática recomendada e é altamente recomendado . Algumas pessoas chegam ao ponto de ter screen
seu shell de login padrão; portanto, quando se conectam, iniciam imediatamente uma nova screen
sessão.