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

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

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

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

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

196 голосов | спросил DevSolar 18 PM00000030000003831 2009, 15:03:38

3 ответа


180

Посмотрите reptyr , который делает именно это. Страница github содержит всю информацию.

  

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

     

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

     

ИСПОЛЬЗОВАНИЕ

     

reptyr PID

     

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

     

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

ответил DaveJohnston 28 J0000006Europe/Moscow 2011, 13:25:12
41

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

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

ответил earl 18 PM00000030000002031 2009, 15:11:20
36

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

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

НТН

веселит,

ответил Rob Wells 18 PM00000040000003231 2009, 16:09:32

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132