Скрининг запущенного процесса

24

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

Есть ли способ проверить уже запущенный процесс, не перезапуская его?

LiraNuna
источник

Ответы:

12

Нашел этот ответ на serverfault от графа :

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

И этот от того же вопроса от Роба Уэллса :

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

кроличий садок
источник
Есть ли способ вернуть работу на передний план? 'screen' тогда 'fg 1' у меня не работает
Putnik
@Putnik - ты делал другие шаги, как описано?
Уоррен
7

В ServerFault обнаружен дубликат .

Другое решение, не найденное в этом посте, использует retty после запуска сеанса экрана.

LiraNuna
источник
5
Я удалил свой ответ; Вы можете (и должны) принять свой собственный ответ через 2 дня. Не стесняйтесь цитировать соответствующие части здесь, поскольку «дубликаты» между сайтами на самом деле не являются обманщиками из-за разной аудитории.
Джефф Этвуд
4
Но вы не указали соответствующие части, согласно предложению Джеффа. =)
Дэвид говорит восстановить Монику
5

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

reptyr - инструмент для «перепечатывания»

программы.

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

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

PID рептира

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

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

DaveJohnston
источник