Идентификатор родителя-сиротца не равен 1, когда родительский процесс выполняется с терминала GNOME

Я начинаю новый процесс с терминала GNOME, а затем этот процесс развивает дочерний элемент. Но когда я убил родительский процесс, родительский идентификатор осиротевшего процесса стал чем-то иным, чем 1, которые представляют init --user pid.
Когда я делаю это в виртуальных терминалах, родительский pid равен 1, который представляет процесс init .
Как я могу выполнить новый процесс с терминала GNOME, чтобы, когда он умер, родительский pid дочернего процесса стал 1, а не pid процесса init --user ?
Большое спасибо.

One Solution collect form web for “Идентификатор родителя-сиротца не равен 1, когда родительский процесс выполняется с терминала GNOME”

Я уже несколько месяцев назад ответил на аналогичный вопрос. Поэтому сначала ознакомьтесь с техническими деталями. Здесь я просто покажу вам, как ваша ситуация покрывается этим ответом.

Как я уже объяснял, я и другие авторы различных утилит надзора dæmon используют преимущества работы Linux, и то, что вы видите, это то, что вы делаете, почти так же, как я ее раскрыл.

Единственным недостающим элементом информации является то, что init --user – ваш экземпляр сеанса выскочки. Он запускается при первом входе в сеанс и останавливается при выходе из системы. Там у вас есть для каждого сеанса (аналогичные, но не идентичные для пользовательских агентов MacOS 10 под управлением).

Пару лет назад люди Ubuntu начали конвертировать графические настольные системы, чтобы использовать высокоуровневые рабочие задания. Терминал GNOME запускается как задание на сеанс, и все дети-сироты унаследованы ближайшим суб-жатким, что, конечно же, является вашим сеансом выскочки.

В последние месяцы сотрудники systemd работали над тем же самым, настраивая GNOME Terminal для запуска отдельных вкладок в виде отдельных системных сервисов из своего индивидуального экземпляра systemd. (Вы можете сказать, что ваш вопрос касается выскочки, а не systemd, потому что в системе systemd процесс systemd --user будет systemd --user .)

Как я могу выполнить новый процесс с терминала GNOME, чтобы родительский PID дочернего процесса становился 1, а не PID процесса инициализации сеанса ubuntu?

Это намеренно сложно. Менеджеры служб хотят отслеживать осиротевшие дочерние процессы. Они хотят не потерять их для обработки №1. Итак, быстрый прием: перестаньте это делать.

Если вы просите об этом исключительно потому, что считаете, что ваш процесс должен иметь идентификатор родительского процесса 1, то отвлечься от этой идеи.

Если вы ошибочно считаете, что это аспект того, чтобы быть dæmon, тогда обратите внимание, что dæmons, имеющие идентификаторы родительских процессов 1, не были гарантированы (и в некоторых Unices, а не true во всей системе) с момента появления таких вещей, как IBM System Resource Контроллер и демона в Бернштейне в 1990-х годах. В любом случае, вы не можете быть dæmon двойным форкированием в сеансе входа в систему. Это давно известная идея, наполовину испеченная.

Если вы ошибочно считаете, что это трюизм для детей-сирот, тогда прочитайте мой предыдущий ответ еще раз. Абсолютизм, который осиротевшие дети повторно воссозданы для обработки № 1, ошибочен, и был ошибочным в течение более трех лет, на момент написания этого.

Если у вас есть дочерний процесс, который по какой-то причудливой причине действительно нуждается в этом, то узнайте, что это за странная причина и устранить его. Вероятно, это ошибка, или кто-то делает недопустимые дизайнерские предположения. Какая бы ни была причина, мир управления dæmon изменился в 1990-х годах, и Linux также изменился несколько лет назад. Пришло время наверстать упущенное.

дальнейшее чтение

  • «Session Init» . выскочка поваренной книги . Ubuntu.
  • Джеймс Хант, Стефан Грабер, Дмитрий Ледков и Стив Лангасек (2012-11-12). «Отмена пользовательских заданий и отслеживание PID» . Ubuntu Raring выскочки пользовательских сессий . Ubuntu.
  • Натан Уиллис (2013-04-17). Upstart для пользовательских сеансов . LWN.
  • systemd . systemd. freedesktop.org.
  • Сгладить скрипт оболочки (включая сценарии с исходными текстами) и удалить неиспользуемые функции
  • systemd service: возможно ли получить имя пользователя, вызвавшего событие power?
  • Как система использует /etc/init.d скрипты?
  • Каковы переменные $ remote_fs и $ syslog в заголовке SysVinit LSB?
  • inittab эквивалент в fedora 15?
  • Какое влияние имеет rc_sys = "docker"?
  • ` <defunct>` с несуществующими детьми -> Любой способ их сбора?
  • Является системным «вредоносным»?
  • Сервер не загружается, паника ядра - не синхронизация
  • startx autologin не запускается в / etc / inittab после обновления Debian Jessie
  • Как отключить автозапуск сервера X в Debian Jessie?
  • Что такое синхронизация во время загрузки ядра?
  • Interesting Posts

    Есть ли какая-либо команда в Linux, которая заставит Linux-машину не выключать

    Kali Linux – Crunch – как поместить символ @ в созданный список

    Пример пакета, который имеет одно и то же имя в двух разных дистрибутивах, но относится к несвязанным восходящим проектам для каждого?

    Конфигурация DNS DNS для суффикса

    Как определить, какие кодовые страницы unicode определены в TTF-файле?

    floppy fstab для vfat и ext

    Сжатие нескольких файлов в разных папках без структуры папок

    Как передать аргумент из сценария bash в 'x-terminal-emulator -e bash -c'?

    неуправляемые vps centos6.4 должны открыть порт 20/21

    Что такое демонстрация для Linux? Сохранение секретных паролей SSH

    Установка Монетного двора Linux на пустой SSD

    Как отключить (удалить) специальную ссылку «.», Созданную для папки?

    NetworkManager изменяет политику маршрутизации по умолчанию

    Новый родительский процесс, когда родительский процесс умирает

    Регулярное выражение busybox для группы IP-адресов

    Linux и Unix - лучшая ОС в мире.