ГлавнаяОперационные системыLinuxReptyr – перемещение процессов в другую экранную оболочку

Reptyr – перемещение процессов в другую экранную оболочку [Linux]

рептир-большой палецВ Linux при запуске процесса, для выполнения которого требуется много времени, может быть затруднительно завершить его на полпути, потому что у вас мало времени или вам нужно вернуться домой.. Если вы когда-либо сталкивались с подобной ситуацией раньше, вам действительно нужен инструмент Reptyr.

Что такое Рептир?

Инструмент Reptyr — это утилита командной строки, которая берет запущенный процесс с одного терминала и переносит его на другой. Другими словами, он повторяет процесс. Название также напоминает псевдотерминал, часто сокращае

Что такое Рептир?

нал, если вы не знали, — это инструмент, позволяющий связать два процесса (ведущий и подчиненный) друг с другом. То, что вы пишете на одном, отражается на другом.

Как работает Reptyr?

С помощью Reptyr вы можете запустить процесс на работе и завершить его дома (если вы используете SSH). Существуют и другие инструменты, похожие на инструмент Reptyr, например Screenify и Retty, и вы, возможно, уже сталкивались с ними раньше. Однако на данный момент Reptry оказался лучше своих конкурентов. Он имеет меньше ошибок и гораздо более эффективен. Проблема с этими другими инструментами заключается в том, что терминал управления процессами не меняется даже при миграции процесса. Например, если вы используете Screenify и пытаетесь использовать команды «^c» или «^z» на новом терминале, они работают неправильно. Это связано с

Как работает Reptyr?

терминале, который в данный момент имеет управление. Если вы измените размер окна программы или попробуете команду «less», она также не будет работать правильно, поскольку Linux обманется, заставив думать, что вы все еще работаете на старом терминале.

Итак, как именно работает Reptyr? Он нацелен на процесс, который мы хотим перенести с помощью ptrace API, открывает новый терминал и использует «dup2» для перезаписи старых дескрипторов файлов. Reptyr также отличается от других процессов тем, что меняет управляющий терминал. Вы можете проверить официальный блог , чтобы получить подробную информацию, но в основном это включает в себя манипулирование функцией ioctl, TIOCSCTTY в Linux для изменения процесса управления.

Установка

В дистрибутиве на базе Ubuntu вы можете использовать apt-get для установки приложения:

sudo apt-get install reptyr

Перенос процесса на новый экран с помощью Reptyr

Вы также можете использовать Reptyr вместе с программным приложением GNU Screen (или аналогичным приложением терминального мультиплексора), чтобы перенести процесс в новый сеанс экрана. Например, если у вас есть запущенный процесс и вам необходимо перезагрузить сервер, вы можете перенести его в новый сеанс экрана, чтобы иметь возможность снова получить к нему доступ после перезагрузки системы. Звучит полезно, не так ли? Так как же именно это сделать?

Во-первых, вам необходимо приостановить процесс, который необходимо перенести. Это можно сделать по-разному – все зависит от запущенного вами процесса (в основном работает «^z»). Затем, после того как вы его приостановили, вам необходимо возобновить процесс в фоновом режиме. Команда для этого, если вы не знали,

bg

Далее вам нужно будет изолировать дочерний процесс от родительского процесса. Это связано с тем, что родительский процесс будет завершен во время перезапуска, и вам необходимо не допустить, чтобы это произошло с дочерним процессом. Для этого используйте команду disown:

disown name_of_process

Затем вам нужно будет запустить приложение Screen. На самом деле это довольно удобный инструмент — его легко скачать, если у вас его нет. Вы запускаете его с помощью следующей команды:

screen

Теперь вам нужно получить процесс, который вы пытаетесь перенести. Обратите внимание, что д

Установка

м понадобится PID запущенного процесса. Альтернативно вы можете использовать команду «pgrep». Если вы знаете PID, введите:

reptyr PID

Если вы не знаете PID:

repty

Перенос процесса на новый экран с помощью Reptyr

>

И все готово! Теперь вы можете выйти из сеанса, не завершая процесс.

Reptyr-manpage

Резюме

$ ctrl+z                # Suspend the current process
$ disown <your process name>          # Detach process from the shell
$ screen                # Launch screen
$ reptyr $(pgrep irssi) # Get back the process</your>

Reptyr имеет открытый исходный код и совершенно бесплатен. Его легко настроить и использовать, так что попробуйте. Уверен, вам это будет очень полезно.

Автор изображения: Техническая зона , Мтеллин@Flickr

Резюме

ПОХОЖИЕ СТАТЬИ

Популярные записи