rc.local против выскочки против systemd [закрыто]

Мы разрабатываем продукт, который зависит от сценария запуска. В нашем прототипе для этой цели используется rc.local, но мы заметили, что upstart и systemd - более современные подходы. Однако мы не обнаружили много конкретных доказательств того, почему предпочтительнее upstart или systemd, чем rc.local.

Почему предпочесть выскочку или systemd? Мы особенно озабочены безопасностью с точки зрения выбора метода.

3
задан 6 June 2017 в 18:14

2 ответа

Для начала, ваш продукт вообще не должен использовать rc.local . rc.local предназначен для системного администратора, чтобы поиграть; с ним они могут делать все, что хотят (до тех пор, пока он успешно завершается). Это в лучшем случае усложняет его редактирование.

Теперь, что вы должны использовать? Ответ прост.

Все они.

Система использует одну систему инициализации в любой момент времени. Если вы предоставляете конфигурацию для всех из них, то та, которая наиболее совместима с работающей, используется автоматически.

Краткий обзор

System V init

  • И Upstart, и systemd поддерживают их, так что вы можете писать сценарии sysv init и работать везде.
  • Эта система инициализации делает только одно: вызывает ваш скрипт с соответствующим параметром. Все остальное - отслеживание запущенных процессов, изменение пользователей, настройка среды и т. Д. Должно быть выполнено в вашем скрипте. Это делает метод сценария инициализации хрупким, если вы плохо разбираетесь в сценариях (сценарии обычно являются сценариями оболочки, но я полагаю, что это может быть что-то другое). Для удобства предусмотрены некоторые стандартные функции, расположение которых варьируется от дистрибутива до дистрибутива.
  • Упорядочение сценариев инициализации выполняется на основе имен файлов и наличия в различных каталогах /etc/rc*, а также на заголовках специальных комментариев .

Upstart (≤ 14.04)

  • На основе событий. Позволяет вашей работе ждать, пока произойдет определенное событие (смонтированные файловые системы, сеть).
  • К сожалению, реализация Upstart усложняет использование более сложной конфигурации запуска. Кроме того, трудно вставить вашу работу в цепочку зависимостей какой-либо другой работы после свершившегося факта.

systemd (≥ 16.04)

  • На основе зависимостей. Единицы запускаются при необходимости. См. Systemd для пользователей Upstart для получения дополнительной информации. Текущее значение по умолчанию init в системах на основе Debian, Ubuntu и RHEL.
  • Основанный на cgroups подход Systemd для отслеживания процессов является наиболее надежным. Это затрудняет для процессов выход из заданного (безопасности) контекста или ограничения ресурса.
  • Администраторы могут легко переопределить конфигурацию init, не ступая на ноги сопровождающего пакета.

И Upstart, и systemd имеют явные преимущества перед sysv init. Оба они являются скорее декларативными, чем обязательными, со встроенной поддержкой различных задач, связанных с управлением сервисами. Вы должны использовать самую современную систему инициализации, доступную в тех версиях, которые вы поддерживаете.

0
ответ дан 6 June 2017 в 18:14

Systemd - это продвижение в Upstart, поэтому вопрос о том, что лучше или безопаснее, на мой взгляд, не совсем оправдывает себя. Лучше спросить себя: « хочу ли я делать вещи по-старому », если это так, Upstart, иначе Systemd.

Проверьте различия здесь , лично мне нравится двигаться вперед, так как это намерение Systemd. Оба имеют превосходную безопасность, и, поскольку вы пришли из Windows, пожалуйста, прочитайте историю Linux Security , тогда, я думаю, вы примете лучшее решение.

Опять же, rc.local добро пожаловать в Linux старой школы, мы верим в будущее, так что делайте это сейчас, а не в прошлом.

0
ответ дан 6 June 2017 в 18:14

Другие вопросы по тегам:

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