пятница, 13 февраля 2015 г.

Используем screen для работы на VDS. Переподключение к сеансу SSH.

В этом посте я расскажу, пожалуй, известную всем вещь, с которой я познакомился только сегодня. Представим себе что у вас есть VDS на котором вам нужно выполнить некую ресурсоемкую операцию. Представим себе что мы запускаем некий процесс, который выводит прогресс своего выполнения в консоль. Если мы подключимся по SSH к VDS и запустим этот процесс - в консоли сеанса SSH появится процент (прогресс) его выполнения, но если у нас сеанс SSH прервется по каким-то причинам, то этот процесс умрет вместе с сеансом. Так как же оставить его выполняться на сервере, чтобы при повторном подключении по SSH мы "попадали в ту же самую консоль" где он выполняется? Задавшись этим вопросом я открыл для себя screen ;)

Натолкнула меня на эту мысль статья Переподключение к сеансу SSH. Если у вас не установлен screen - устанавливаем его. В CentOS проще всего сделать это с помощью менеджера пакетов yum, запускаем yum install screen и screen у нас установлен. После этого подключаемся по SSH и выполняем screen без аргументов. Всё. Всё что у нас будет запущено в этом окне - будет запущено в сеансе этого screen. Проведем небольшой тест, наберем в консоли запущенной из под screen'а - echo decker.su и закроем сеанс SSH:


Затем подключимся по SSH вновь и дадим компанду screen -x :


Как видно, мы оказались в том же самом "оставленном" нами на сервере сеансе. Бинго.

Не лишним будет также почитать мануал к screen'у, чтобы разобраться более подробно. Но для решения простой практической задачи - хватит и этих "знаний".

1 комментарий :

  1. Здравствуйте, decker.
    Сам пользуюсь на постоянной основе для запуска долгоиграющих процессов в фоновом режиме.
    Зашел для решения одного вопрос и зачитываюсь ретроспективой блога.
    Спасибо.

    ОтветитьУдалить