Идентификатор родителя-сиротца не равен 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.
  • Зачем нам нужны initramfs и initrd
  • Инициативный скрипт оставляет тысячи неработающих процессов
  • Как исправить загрузку в приглашение initramfs и «mount: не могу прочитать» / etc / fstab: Нет такого файла или каталога »и« Нет init found »?
  • Как удалить (не отключить / маску) блок в Systemd?
  • Как параметр systemd Type влияет на запуск других устройств?
  • параметр ядра init = / bin / bash не работает? (RHEL7, тест RHCSA)
  • / sbin / init - общий объект?
  • systemd: напишите .service daemon для настройки swap и fs в zram
  • заколол мой beaglebone с плохим сценарием rc
  • Как изменить скрипт init на CentOS 7?
  • Как регистрировать вывод в файл журнала с помощью runit
  • Linux и Unix - лучшая ОС в мире.