Как перенести уже запущенный процесс в screen и сохранить его при разрыве соединения

Как перенести уже запущенный процесс в screen и сохранить его при разрыве соединения

Что делать, если после обрыва SSH процесс обрывается? Есть способ перенести уже запущенный процесс в screen и не потерять работу.

Если Вы работаете через SSH и запускаете долгие процессы (сборка, рендеринг, бэкапы), то при разрыве соединения они могут завершиться. Решение — использовать screen или tmux. Но что делать, если процесс уже запущен? В такой ситуации поможет связка screen и утилиты reptyr. Рассмотрим как быстро и просто это сделать.

Пошаговая инструкция

  1. Найдите PID процесса
    Выполните команду и узнайте идентификатор процесса:

    ps aux | grep <имя_процесса>
    

    Пример:

    ps aux | grep python
    
  2. Создайте новую сессию screen
    Запустите screen с именем для удобства:

    screen -S mysession
    
  3. Перенесите процесс внутрь screen с помощью reptyr
    Внутри открытой сессии выполните:

    reptyr <PID>
    

    Теперь процесс будет управляться через screen.

  4. Отсоединитесь от сессии и вернитесь позже
    • Отсоединиться: Ctrl + A, затем D.
    • Вернуться:
      screen -r mysession
      

Возможные проблемы и решения

  • Если reptyr не установлен:
    sudo apt install reptyr
    
  • Если появляется ошибка Operation not permitted:
    Разрешите перенос процессов:

    echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    

Итог

С помощью reptyr можно безопасно перенести уже запущенный процесс в screen и не потерять его при обрыве SSH-сессии. Это удобный способ сохранить контроль над любыми долгими задачами на сервере и вернуться к их управлению в любой момент.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix.ru © Все права защищены 2015 - 2025

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!