До недавнего времени существовал простой и эффективный способ запуска / остановки / перезапуска служб:
service nginx start|stop|restart
Это прекрасно работало в течение многих лет, пока некоторые умные штаны не решили улучшить их, и теперь я сталкиваюсь с системами Debian / Ubuntu, где service
скрипт ничего не делает (так как я должен использовать такие вещи, как systemctl start nginx.service
(гораздо дольше, нет автоматического завершения работы, ...)
Мой вопрос касается специально Debian и Ubuntu, но было бы также полезно рассмотреть дистрибутивы CentOS / RedHat.
Итак, есть ли что-то, что может спасти меня от этих обреченных изменений?
В случае, если это было неясно, я ищу последовательный способ справиться с тем, который будет работать на Debian 7.x, 8.x, последних версиях Ubuntu LTS и non-LTS.
PS. Вне рамок этого конкретного вопроса, но дополнительные плюсы предоставляются, если решение будет также включать в себя включение и отключение части для служб.
service
команду оболочкой, которая вместо этого вызывает servicectl?service
для тебя ничего не происходит? Он работает, как и ожидалось, на моем LMDE (это в основном тестирование Debian), я не думал, что это было специфично для LMDE. Это также работает, как и ожидалось в моей Ubuntu VM.Ответы:
На протяжении всей запутанной истории на различных платформах Unix существовало множество различных систем управления загрузкой и службами.
service\chkconfig
Система , основанная вы нашли простой и эффективный , как правило , называют SysVinit стиле и является важным шагом на пути к какой - то стандартизации. Этот стиль загрузки вы найдете в RHEL / CentOS (EL) до 6-го выпуска, от Fedora до 14 и в дистрибутивах на основе Debian / Ubuntu вплоть до 2015 года. Хотя это была не единственная система загрузки во всем, (более простой) стиль BSD Система init все еще имеет много поклонников.SysVinit не был идеальным решением (что есть?), И Systemd был разработан для преодоления многих проблем; это
systemctl
система, основанная на командах, которую вы сейчас испытываете. Несмотря на то, что он не всем нравится (люди ненавидят изменения, раздувают и т. Д.), Нет сомнений, что он быстро становится стандартом де-факто в большинстве дистрибутивов.Поэтому, глядя немедленно направить ответ на свой первоначальный вопрос просто: стандартный способ управления услугами через большинство дистрибутивов Linux сейчас ! Как долго это будет сохраняться, можно только догадываться; вероятно, только до тех пор, пока не появится что-то лучшее и широко распространенное.
systemctl
Я уверен, что будут доступны обертки, позволяющие вашим любимым
service/chkconfig
командам продолжать делать в основном нормальные вещи, но с этой конкретной кривой обучения, вероятно, лучше не бороться с этим. Может быть, с нетерпением жду, на какое-то время появятся такжеsystemctl
обертки для старых систем, чтобы сделать управление ими вместе с более современными менее болезненными;)источник
… Что , как уже говорили другие в комментариях, было сделано давно .
Команда
/usr/sbin/service
в Debian 8 является частью пакета sysvinit-utils. Он существует с 2009 года. Это специфичное для Debian дополнение, созданное RedHat к исходному пакету исходного кода sysvinit, и, как видно из чтения сценария, он распознает как запуск systemd, так и наличие выскочивших заданий, вывод команд наsystemctl
иinitctl
( через его псевдонимы) соответственно. Это было сделано с 2013 года.service name action
довольно широко доступен даже в операционных системах, отличных от Linux. Он даже будет работать на большинстве BSD, поскольку у них тоже есть свои собственныеservice
команды. Вservice
пакете nosh также есть команда shim, которая переводится как . Но …system-control action name
service
команды.service
Команды BSD имеют давно известные проблемы, о которых системные администраторы рассказывают военные истории на протяжении десятилетий.Включение и отключение сервисов - похожая ситуация. Хотя SuSE
chkconfig
программа (доступно упакован для Debian и Ubuntu) очень отличается от в Fedora одной (они записываются в совершенно разных языках программирования, даже - один компилируется, один интерпретирован), есть общий минимальный синтаксис, с действием того или , Но …chkconfig name action
on
off
chkconfig
на BSDs, как обычные инструменты для этого либоsysrc
или более позднего OpenBSDrcctl enable
иrcctl disable
. Естьchkconfig
иrcctl
регулировочные шайбы в Nosh пакет , который переводит к и .system-control enable name
system-control disable name
chkconfig
знает о systemd и действует как прокладка дляsystemctl enable
иsystemctl disable
. SuSEchkconfig
не знает systemd.дальнейшее чтение
script/service
, Init-система-хелперы. Исходный архив Debian.telinit
, Руководство Nosh . 1,20. Программное обеспечение JdeBP.service
командой . Нош страницы. Программное обеспечение JdeBP.service
, §8. Страницы руководства FreeBSD.источник
Не существует стандартного способа запуска и остановки служб в Linux.
Попробуйте инструмент управления конфигурацией / оркестровки: Ansible , Chef , Saltstack , Puppet или любой другой.
Вы можете запустить и включить сервис с Ansible:
Взгляните на класс LinuxService в
service
модуле Ansible :источник
Ваша проблема в том, что Debian / Ubuntu перешли на новое
systemd
в качестве замены старогоsysvinit
. Спросите, какой из них лучше, и вы начнете огненную войну, но вы всегда можете вернуться к старомуsysvinit
, отметьте это, если хотите вернуться.источник