Я хочу завершить экземпляр GNU screen
, сохраняя процесс, выполняющийся внутри него.
Поэтому я открыл свою обычную программу-эмулятор терминала и запустил экран. Затем я использовал этот экземпляр screen
для выполнения ./script_x.sh
. Теперь, по какой-то причине, я хочу прекратить использование, screen
однако script_x.sh
еще не выполнил свою задачу, и я не желаю лишаться своего прогресса.
Могу ли я сохранить активный процесс живым, чтобы продолжить работу над ним в моем обычном эмуляторе терминала?
screen
сеанса.screen
. Я хотел прекратить использоватьscreen
. Я не хотел останавливать программу, которая работала внутриscreen
. Вот и все. Я не знаю, как прояснить ситуацию или выразить это проще, чем это.Ответы:
TLDR: Практический ответ: Нет.
Более длинный ответ:
В теории вы можете. Если вы запустили что-то вроде
nohup myprog &
изнутри экрана, оно продолжится. Он будет игнорировать сигнал зависания и не будет иметь никакого входа, но в теории вы могли бы продолжить работу с ним.На практике это не так. Таким образом, если вы не хотите присоединить отладчик к запущенному процессу, переписать его файловые дескрипторы и убедиться, что процесс обрабатывает сигналы -1, когда вы закрываете экран ... тогда ответ - нет.
Если вы готовы сделать это, у меня дома есть закладка, указывающая на [SU], где кто-то сделал именно это . Сохранено для удивительности, а не потому, что это легко и тривиально сделать.
источник
disown
или на более низком уровне), чтобы неSIGHUP
было отправлено ни одного , когда родительский процесс умирает. Переподключение ввода / вывода - это совсем другое - вот где приходит отладчик.nohup
если вы находитесь в оболочке управления заданиями (какbash
,ksh
,csh
,zsh
,ash
и т.д.). Если вы все еще используете неуправляемую оболочку управления, такую как Bourne,sh
возможно, пришло время обновиться.Вы можете попробовать использовать
reptyr
для повторного подключения уже запущенного приложения к другому терминалу. У него есть некоторые проблемы с отправкой процесса в фоновом режиме.Я только что проверил это (начните
htop
внутриscreen
,reptyr
это к другому терминалу, убейтеscreen
), и это, казалось, работало хорошо. Тем не менее, это действительно хакерское решение, так что никаких гарантий.источник
Да (если «убийство» на самом деле не убийство), это именно то, для чего предназначен экран. Вы должны проверить руководство и попробовать, какой из них соответствует вашим потребностям:
Тогда вам понадобятся параметры командной строки -D / -d -R / -r экрана, в зависимости от вашего выбора.
источник