Что делать, если после обрыва SSH процесс обрывается? Есть способ перенести уже запущенный процесс в screen и не потерять работу.
Если Вы работаете через SSH и запускаете долгие процессы (сборка, рендеринг, бэкапы), то при разрыве соединения они могут завершиться. Решение — использовать screen
или tmux
. Но что делать, если процесс уже запущен? В такой ситуации поможет связка screen
и утилиты reptyr
. Рассмотрим как быстро и просто это сделать.
Пошаговая инструкция
- Найдите PID процесса
Выполните команду и узнайте идентификатор процесса:ps aux | grep <имя_процесса>
Пример:
ps aux | grep python
- Создайте новую сессию screen
Запуститеscreen
с именем для удобства:screen -S mysession
- Перенесите процесс внутрь screen с помощью reptyr
Внутри открытой сессии выполните:reptyr <PID>
Теперь процесс будет управляться через
screen
. - Отсоединитесь от сессии и вернитесь позже
- Отсоединиться:
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-сессии. Это удобный способ сохранить контроль над любыми долгими задачами на сервере и вернуться к их управлению в любой момент.