Nawet jeśli nie jest to bezpośrednia odpowiedź na twoje pytanie, jest ściśle związana z twoim problemem. Zamiast próbować utrzymywać połączenie przy życiu (wszystkie połączenia w końcu umierają), możesz użyć multiplekserów terminali, takich jak screen
i, tmux
które utrzymują sesję w tle, nawet jeśli terminal zostanie rozłączony.
Zasadniczo po zalogowaniu się na serwerze SSH natychmiast uruchamiasz się, screen
aby utworzyć i dołączyć nową sesję:
$ screen
Następnie idź dalej i wykonuj swoją pracę z powłoką, jak zwykle. Teraz, jeśli połączenie zostanie zerwane, kiedy będziesz mógł wrócić do trybu online i ponownie połączyć się z serwerem przez SSH, otrzymasz listę bieżących sesji z:
$ screen -ls
Aby ponownie dołączyć do sesji:
$ screen -r <session>
gdzie <session>
jest PID lub nazwa sesji. Nastąpi ponowne połączenie z sesją i możesz kontynuować od miejsca, w którym zostało przerwane!
Możesz nawet odłączyć sesję i połączyć się ponownie z domu, aby odebrać dokładnie z miejsca, w którym zostało przerwane. Aby odłączyć sesję, której używasz, C-a
a następnie C-d
(to Control + A
i wtedy Control + D
).
Jest też prosty samouczek online .
Używanie screen
i tmux
na zdalnych serwerach jest uważane za najlepszą praktykę i jest wysoce zalecane . Niektóre osoby idą tak daleko, że mają screen
domyślną powłokę logowania, więc po nawiązaniu połączenia natychmiast rozpoczynają nową screen
sesję.