Руководства

Работа с удалёнными серверами, используя SSH и GNU Screen

2013.11.01

Итак, нам нужно запустить что-то очень-очень долгоиграющее на удалённом сервере. Например, как мне сегодня - скрипт рассылки 14 тысяч писем.

Или очень не хочется терять рабочее окружение (например, у нас там открыт EMACS и в нём штук десять буферов с разными файлами конфигов).

Делается так:

ssh SERVERNAME
screen -dRR

Теперь мы в отдельной сессии screen на удалённом сервере. Всё, что мы запустим теперь, будет работать внутри этой сессии.

После нажатия Ctrl-a (работает даже если какая-то долгоиграющая программа уже запущена) мы отключаемся от сессии screen и выходим обратно в сеанс ssh. При этом всё, что было запущено внутри screen, продолжит работу. Понятное дело, если сервак выключат, то всё, что было внутри screen помрёт, но это намного, намного лучше, чем если бы оно померло от того, что у нас оборвалось соединение ssh или нам просто понадобилось выключить свой компьютер.

Соответственно, можно выйти из сеанса ssh и делать всё, что угодно, выключить комп и пойти спать, например. Потом, когда понадобится, мы делаем то же самое:

ssh SERVERNAME
screen -dRR

И снова попадаем в тот же сеанс, который запустили. Ключи -dRR нужны для того, чтобы запустить новый сеанс, если ни одного не запущено, и/или подключиться к имеющемуся, если он запущен.

Предыдущий: Как запускать что-либо при запуске Debian Следующий: Как скомпилировать программу под Windows, находясь в GNU/Linux