Процесс Linux для фона – relogin – как вернуть процесс на передний план?

Я запускаю процесс, помещаю его в фоновый режим, затем выхожу из системы, затем снова вхожу в систему и снова хочу вернуть процесс на передний план. Я смотрел в «ps aux» для PID, но он не будет помещен на передний план с помощью «fg ###». Каков правильный путь?

(Я использую ту же учетную запись для обоих сеансов входа.)

  • OS X «Смертельная спираль»? Невозможно запустить новые процессы, в конечном итоге становится непригодным
  • Отключить VPN для данного процесса / приложения
  • Узнайте, какой процесс блокирует файл или папку в Windows
  • Должен ли я убить зомби-процесс в моей системе?
  • Есть ли способ узнать, какой процесс создал определенный файл?
  • Firefox запускает процесс DllHost.exe при загрузке ZIP-файлов
  • Можно ли установить ACL в точке монтирования sysfs?
  • Завершение умной вкладки (для каталогов)?
  • Предотвращение «сохранения сна» из окон и перезапись разделяемого раздела
  • Как я могу предоставить доступ к записи для всех пользователей в Linux?
  • Монитор неправильно отображает поддерживаемое разрешение
  • Что именно определяет, если фоновая работа убита, когда оболочка завершена или убита?
  • 2 Solutions collect form web for “Процесс Linux для фона – relogin – как вернуть процесс на передний план?”

    Самый распространенный способ выполнить это, вероятно, с помощью экрана GNU .

    Экран – полноэкранный оконный менеджер, который мультиплексирует физический терминал между несколькими процессами, обычно интерактивными оболочками.

    В основном вы будете:

    • Убедитесь, что установлен screen . Обычно это пакет « screen » для большинства дистрибутивов Linux. Он устанавливается по умолчанию в Mac OS X.
    • screen выполнения

    Alt text

    Alt text

    • Запустите программу, для которой требуется «фон». Например, я запускаю файл журнала:

    Alt text

    • Нажмите Ctl-a, d чтобы отсоединить экран.

    • Выходите, делайте другие вещи, что угодно. Здесь я отправлю сообщение в журнал.

    Alt text

    • Когда вы входите в систему снова, наберите screen -r чтобы повторно подключить сеанс, который вы запускали раньше. Здесь вы можете увидеть сообщение, которое я отправил в журнал (и более ранний тест тоже).

    Alt text

    Экран многими считается мощным инструментом для Linux / Unix, и я склонен согласиться!

    Для получения дополнительной информации о экране см. Его домашнюю страницу или эту детальную статью от Ars Technica .

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

    Лучший способ – использовать экран GNU . Запустите сеанс экрана, запустите процесс, отсоедините его от сеанса экрана, выйдите из системы, войдите в систему, снова подключитесь к сеансу экрана. Процесс все еще запущен, и экран сохраняет выходные данные в буферах окна. Вам даже не нужно это делать; Вы можете оставить его в одном окне и использовать другие для других задач.

    Уродливым хакерским способом является отсоединить его от терминала до выхода из системы. В bash, disown -h %[jobid] делает это; Другие оболочки, такие как tcsh, делают это автоматически для фоновых процессов при выходе из оболочки. (Получите $[jobid] , запустив jobs команды.) Вы не можете $[jobid] непосредственно к процессу, но если все, что вам нужно, это stdout / stderr / stdin процесса, вы можете использовать GDB для подделки повторной привязки. Это частичное практическое руководство от этого источника (изначально включенного в другой ответ ):

    […] с некоторыми грязными хаками, невозможно возобновить процесс 'stdout / stderr / stdin.

    Таким образом, вы все равно можете создать пустое окно экрана (например, которое запускает сон).

    И затем используйте gdb, например, для присоединения к процессу, выполните некоторые вызовы close (0)
    Call close (1)
    Call close (2)
    Вызов open ("/ dev / pts / xx", …)
    Call dup (0)
    Call dup (0)
    отрывать

    Выход процесса будет отображаться на экране. Он не будет прикреплен к этому терминалу экрана, поэтому, например, [sic] убьет команду «sleep», а не процесс, но этого может быть достаточно для OP.

    Есть несколько способов сделать bash автоматическим отключением , но они включают в себя магазины или nohup или другие трюки bash, чтобы избежать автоматического SIGHUP. Bash не такой изящный, как tcsh в этой области, и вы должны заранее знать, что вам нужно это, чтобы настроить этот параметр. Немного легче помнить, чтобы вы отключали свою фоновое задание до выхода.

    Давайте будем гением компьютера.