портативное управление демона от удара (sysvinit/upstart/systemd)

Нет никакой "одной кнопки способа" выполнения этого. Экспериментальный с lib или можно использовать DKIMproxy, который работает с DKIM и DomainKeys для подписания исходящей почты.

1
задан 19 May 2014 в 23:46
4 ответа

Я бы не стал использовать / etc / issue, так как этот файл иногда изменяется или может даже не упоминать версию.

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

Со своей стороны:

Debian: /etc/debian_version
Ubuntu: /etc/lsb-release
Arch: /etc/arch-release

лично я бы проверил наличие файла и "рассмотрит" его на основе этого файла

см. Здесь некоторые другие файлы распространения

linuxmafia.com

2
ответ дан 3 December 2019 в 16:17

Если он у вас есть по какой-то другой причине, facter имеет факт операционной системы , который будет делать то, что вы хотите.

2
ответ дан 3 December 2019 в 16:17

И Ubuntu, и debian имеют служебную утилиту. Используйте имя сервиса start|stop для всего, кроме arch.

.
1
ответ дан 3 December 2019 в 16:17

Я бы сказал не смотреть на текущий дистрибутив , чтобы определить, какую систему инициализации использовать для управлять демонами:

  • Определить дистрибутив (как описано в ответе Денниса) немного туманно
  • . Используемая система инициализации изменяется между версиями дистрибутива (как заметил Майкл Хэмптон, все известные дистрибутивы тяготеют к systemd ; Ubuntu в настоящее время является одним из самых известных противников, и они планируют перейти на него к 2016 году.)
  • Система инициализации может быть изменена при индивидуальной установке по умолчанию (начиная с 14.10 Utopic Unicorn в октябре этого года, некоторые установки Ubuntu могут выберите заранее переключиться на systemd).

Хотя это не является надежным (система может выбрать установку нескольких систем инициализации рядом друг с другом), я бы сделал это так, чтобы искать присутствие самих инструментов :

if command -v systemctl >/dev/null; then
  # assume systemd
  systemctl $command $servicename
elif command -v initctl >/dev/null; then
  # assume upstart
  initctl $command $servicename
elif command -v service >/dev/null; then
  # assume old Debian `service` utility
  service $servicename $command

# ... elif cases for any other utils you'd want to check for ...

else
  # assume bare init.d scripts
  /etc/init.d/$servicename $command
fi

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

В конечном итоге, однако, нет единого способа по-настоящему определить, какая именно система инициализации установлена "использует" - можно создать настройку, которая переключается между системами инициализации при каждой загрузке.

5
ответ дан 3 December 2019 в 16:17

Теги

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