21

Я хочу завершить экземпляр screen GNU, сохраняя процесс, выполняющийся внутри него.

Поэтому я открыл свою обычную программу-эмулятор терминала и запустил экран. Затем я использовал этот экземпляр screen для выполнения ./script_x.sh . Теперь, по какой-то причине, я хочу выйти из screen однако script_x.sh еще не выполнил свою задачу, и я не желаю лишаться своего прогресса.

Могу ли я сохранить активный процесс живым, чтобы продолжить работу над ним в моем обычном эмуляторе терминала?

3 ответа3

31

TLDR: Практический ответ: Нет.

Более длинный ответ:

В теории вы можете. Если вы запустили что-то вроде nohup myprog & изнутри экрана, оно продолжится. Он будет игнорировать сигнал зависания и не будет иметь никакого входа, но в теории вы могли бы продолжить работу с ним.

На практике это не так. Таким образом, если вы не хотите присоединить отладчик к запущенному процессу, переписать его файловые дескрипторы и убедиться, что процесс обрабатывает сигналы -1, когда вы закрываете экран ... тогда ответ - нет.

Если вы готовы сделать это, у меня дома есть закладка, указывающая на [SU], где кто-то сделал именно это. Сохранено для удивительности, а не потому, что это легко и тривиально сделать.

23

Вы можете попробовать использовать reptyr для повторного подключения уже запущенного приложения к другому терминалу. У него есть некоторые проблемы с отправкой процесса в фоновом режиме.

Я только что проверил это (запустите htop внутри screen , reptyr его на другом терминале, убейте screen), и это, похоже, работает нормально. Тем не менее, это действительно хакерское решение, так что никаких гарантий.

14

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

C-a d
C-a C-d     (detach)      Detach screen from this terminal.

C-a D D     (pow_detach)  Detach and logout.

Тогда вам понадобятся параметры командной строки -D/-d -R/-r экрана, в зависимости от вашего выбора.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .