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

<p>моя офисная работа обычно видит, что я подключен к linux через vnc.</p><p>иногда я запускаю удаленную работу на консоли и позже понимаю, что она выполняется намного дольше, чем ожидалось. (должен был начать это под screen в первую очередь ...)</p><p>я не хочу, чтобы моя рабочая станция работала всю ночь, просто чтобы держать сеанс vnc открытым; я хотел бы переместить это уже запущенное удаленное задание в сеанс screen (на удаленном блоке), чтобы я мог выключить рабочую станцию (и восстановить соединение на следующее утро).</p><p>как это можно сделать, если вообще?</p>

<p>посмотрите на <a href="https://github.com/nelhage/reptyr">reptyr</a> , который делает именно это. страница github содержит всю информацию.</p><blockquote> <h2>reptyr - инструмент для перепечатывания программ.</h2> <p>reptyr - это утилита, которая берет существующую работающую программу и присоединяет ее к новому терминалу. запустил длительный процесс через ssh, но должен уйти и не хочет его прерывать? просто запустите экран, используйте reptyr, чтобы захватить его, а затем завершите сеанс ssh и идите домой.</p> <h2>применение</h2> <p>pid рептира</p> <p>"reptyr pid" захватит процесс с идентификатором pid и подключит его к вашему текущему терминалу.</p> <p>после подключения процесс примет входные данные и запишет их на новый терминал, включая ^ c и ^ z. (к сожалению, если вы справитесь с этим, вам все равно придется запустить "bg" или "fg" в старом терминале. вероятно, это невозможно исправить разумным способом, не исправляя свой shell.)</p> </blockquote>

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

<p>когда вы используете linux, как насчет использования retty во вновь запущенном процессе экрана?</p><pre><code>$ screen -s my_process $ retty $(pgrep my\_process) /redraw </code></pre><p>нтн</p><p>веселит,</p>