Как вернуть потерянный фоновый процесс на передний план?

Что ж, дело обстоит так: мне пришлось запустить программу из дома, ssh подключившись к серверу в моем учреждении. Я не хотел, чтобы моя программа завершалась при закрытии сеанса (я не знал о screen).

Что я сделал, так это нажал Ctrl+Z, а затем набрал bg, чтобы он выполнялся в фоновом режиме. Сессия была прекращена. Теперь, когда я вхожу в систему со своего компьютера в учреждении и набираю ps -u username, это показывает, что программа все еще работает, но я не могу вывести ее на передний план.

Я пробовал fg и jobs, но эти команды ничего не дают.
Пожалуйста, помогите мне..


person Rudra Murthy    schedule 13.08.2012    source источник


Ответы (3)


Если вы запустили процесс без использования команды «экран», вы не можете взять на себя этот процесс. По сути, вы не можете взять на себя процесс, запущенный в другой оболочке.

Когда ваш сеанс завершится, весь процесс bg перейдет в отсоединенное состояние. Хотя вы можете увидеть детали такого процесса, вы не сможете передать их в оболочку после входа в систему.

person knightrider    schedule 13.08.2012

Если процесс был осиротевшим, вы не можете «переподчинить» его другой оболочке и использовать fg, bg, ^Z, ^C и т. д. для управления им.

Кажется, вы неявно спрашиваете, как управлять осиротевшим процессом. Поскольку вы можете увидеть процесс с помощью команды ps, у вас есть его pid. Вы можете использовать этот pid в качестве аргумента команды kill, которая позволит вам остановить, продолжить или завершить процесс. Вы не можете ждать завершения процесса, но можете опросить его, чтобы узнать, существует ли он, используя команду «kill -0 ‹pid›».

person Stuart Marks    schedule 13.08.2012

https://serverfault.com/questions/55880/moving-an-already-running-process-to-screen

Дает альтернативный взгляд на этот вопрос. В верхнем ответе предлагается использовать Reptyr.

person chim    schedule 24.03.2014
comment
Краткий ответ из другой публикации: это возможно. Установите reptyr, затем запустите reptyr [PID], но это может не сработать, если один процесс (например, bash-скрипт) запустил другой (под)процесс. - person BurninLeo; 01.10.2015