Подобно многим предыдущим вопросам, я обнаружил, что выполняю работу, которую хотел бы запустить на экране. Я был вынужден отказаться от процесса, потому что мне нужно было отключиться. Теперь, когда я снова подключился, я вижу, что процесс все еще работает. Как я могу "восстановить" процесс, чтобы я мог видеть его вывод и дать ему ввод?
Этот вопрос отличается от простого перемещения запущенного процесса на экран тем, что он включает повторное открытие потерянных дескрипторов stdin / out / err.
Ответы:
Это повторяющийся вопрос - см. Перемещение уже запущенного процесса на Screen , который указывает на retty , который является самоописанным ужасным взломом, реализующим то, что я всегда догадывался, возможно, но никогда не пытался: он находит fd 0, 1 и 2 (стандартный ввод, вывод и ошибка соответственно) для процесса и присоединения к ним, как ужасного аберрантного паразита, которого не должно быть.
источник
Отказываясь от процесса, вы фактически говорите, что хотите, чтобы он игнорировал SIGHUP, выданные терминалом. Как только вы закроете сеанс (скажем, bash), этот процесс станет собственностью init. Поэтому, когда вы говорите, что хотите переуступить процесс после того, как отказались от владения, вы говорите, что хотите отобрать право собственности у другого процесса - который не реализован, и на то есть веская причина. Это просто невозможно сделать изящно в Linux.
источник
disown
специфичной для bash, которая, несмотря на название, на самом деле не имеет ничего общего с изменением владельца процесса.