Как я могу запустить Systemd в качестве процесса с PID 1 и с PID не 1?

Если вы хотите выполнять команду при каждом коммите, возможно, вам поможет хук git post-commit (см., например, описание в git book).

-4
20.12.2018, 01:30
2 ответа

Для начала

В системах UNIX (, включая Linux ), все процессы имеют идентификатор процесса или PID . Это число, используемое для обозначения процесса во время его выполнения. Обычно невозможно предсказать, какой PID будет у процесса.

Однако существует один специальный процесс, который всегда имеет PID 1. :Процесс init , который является первым процессом, запускаемым в системе во время загрузки. Помимо запуска всех важных фоновых процессов, у него есть еще несколько целей/задач.

systemd — одна из нескольких возможных программ, которые могут работать как процесс 1. Однако у нее есть дополнительная функция, благодаря которой она также может работать в «режиме каждого -пользователя», управляя фоновыми процессами, необходимыми для этого конкретного пользователя (например, подключение к смартфону --для этого требуется специальный сервер на Linux ). Обычно он может сказать, что он должен делать, по своему PID. Эти переключатели командной строки позволяют вам переопределить это.

Для получения дополнительной информации о том, почему и как это сделать, я рекомендую эту страницу на вики Arch Linux . Несмотря на репутацию Arch как элитарного и сложного дистрибутива, документация очень хорошая и на удивление доступная.

Чтобы ответить на ваши конкретные вопросы:

How can I run systemd as a process with pid 1 and with pid not 1?

Чтобы запустить systemd с PID 1, это должна быть ваша программа инициализации. Большинство дистрибутивов Linux позволяют выбирать из нескольких таких служб (, другими являются SysV Init, Upstart, runit и OpenRC ), но по умолчанию обычно используется systemd. Следовательно, это, вероятно, уже происходит на вашем компьютере.

Чтобы запустить systemd с PID, отличным от 1, просто запустите его при любых других обстоятельствах. Опять же, это, вероятно, уже происходит на вашем компьютере, так как основные дистрибутивы также используют systemd в вышеупомянутом пользовательском режиме -. Для некоторых вещей, которые вы можете сделать с этим,см. вики-страницу Arch, на которую я ссылался выше.

Does a system instance mean a process whose euid/ruid is root? Does a user instance mean a process whose euid/ruid is nonroot?

UID и EUID экземпляра системы всегда будут равны 0 (root ), чтобы он мог предоставить запускаемым программам все необходимые привилегии. В Linux (и большинстве систем UNIX )очень часто начинают с полными привилегиями, а затем отказываются от всех, кроме тех, которые вам действительно нужны.

Однако на каждый -пользовательский экземпляр systemd может приходиться не более одного экземпляра с UID 0. :Помните, что root — это просто еще один пользователь. В то время как большинство современных -дистрибутивов Linux по умолчанию принимают меры для предотвращения этого, вполне возможно войти в систему как пользователь root.

Последнее предостережение

Ни при каких обстоятельствах не экспериментируйте с systemd, входом в систему с правами суперпользователя или чем-либо еще, связанным с запуском или корневым доступом, на компьютере, который вы используете для важной работы.

4
28.01.2020, 05:20

Человек будет исправлен, я сообщил о проблеме с нимhttps://github.com/systemd/systemd/issues/12843

--systemнельзя использовать с PID, отличным от 1.

1
28.01.2020, 05:20

Теги

Похожие вопросы