Вопрос: Перемещение уже запущенного процесса на экран


Моя офисная работа регулярно видит, что я подключен к Linux-серверу через VNC.

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

Я не хочу, чтобы моя рабочая станция работала на ночь, чтобы открыть сеанс VNC; Я хотел бы переместить это уже запущенное удаленное задание в сеанс экрана (в удаленном ящике), поэтому я могу отключить рабочую станцию ​​(и снова подключиться к следующему утру).

Как это можно сделать, если вообще?


197
2017-08-18 11:03


Источник


и это обман, serverfault.com/questions/49877/... - Кажется, это невозможно. - Paul Dixon
superuser.com/questions/28568/screen-a-running-process - warren
Также см Как я могу отменить запущенный процесс и связать его с новой оболочкой экрана?, - dma_k
Возможный дубликат Могу ли я nohup / screen начать процесс? - scai
Найдите скрипт для проверки. - Vashu


Ответы:


Посмотри на reptyr, что делает именно это. На странице github есть вся информация.

reptyr - инструмент для «повторного набора» программ.

reptyr - это утилита для   существующая программа запуска и присоединение   это новый терминал. Начал   длительный процесс по ssh, но   должны уйти и не хотят   прервать его? Просто запустите экран, используйте   рептир, чтобы схватить его, а затем убить   ssh и голова на дому.

ПРИМЕНЕНИЕ

reptyr PID

«reptyr PID» захватит процесс   с идентификатором PID и привязать его к вашему   текущий терминал.

После присоединения процесс будет   ввод и вывод вывода на новый   терминал, включая ^ C и ^ Z.   (К сожалению, если вы его освещаете,   вам все равно придется запускать «bg» или   «fg» в старом терминале. Это   вероятно, невозможно исправить в   разумный способ, не   оболочка.)


181
2018-06-28 09:25



Если, как и я, вы посмотрели ссылку выше и кратко рассмотрели возможность установки программы из источника, возьмите сердце: это просто apt-get в системах Debian. - mlissner
Это прекрасно работает, как я не видел этого раньше? - deed02392
Это круто! Я бы повысил его 10 раз, если бы мог! Кроме того, reptyr доступен также в репозиториях RedHat. Просто «yum install», чтобы получить его. - Mark J. Bobak
Не работает, кроме как в самых тривиальных случаях: Unable to attach. (This most commonly means that 11690 has a suprocesses) - Mehrdad
По крайней мере, как root, вы можете использовать reptyr -T PID - ChristophK


Вы не можете сделать это, легко. Я бы посоветовал сделать привычкой запускать экран, как первое, что вы делаете после открытия консоли.

Однако для вашей реальной проблемы есть еще одна вещь, которую вы могли бы попробовать: после того, как вы запустили свою работу с терминала, запишите ее, набрав ctrl-z, а затем bg, После этого отделите задание от родительской оболочки; в bash вы бы сделали disown -h %<jobid>, После этого вы можете безопасно закрыть терминал, и работа продолжит работу.


41
2017-08-18 11:11



Это очень сработало для моего дела. reptyr и retty оба не смогли захватить процесс, но все, что мне было нужно, - это закрыть терминал и оставить процесс запущенным. - STW
FYI: после отрекатьсяпроцесс может быть reptyrвнутри экран, - Adam
Это убило мою запущенную программу :( - Mehrdad


Как вы используете Linux, как насчет использования retty в новом запущенном экране?

$ screen -S my_process
$ retty $(pgrep my_process)
/redraw

НТН

веселит,


36
2017-08-18 12:09



Спасибо, не знаю. Тем не менее, для вида долговременных заданий, которые я имею в виду, я немного неохотно использую инструмент, который называет себя «очень легко проверенным». Я иду с решением графа.
Не вижу рети в Gentoo - Sergei
не может прикрепляться к 4858 - Arnold Roa