В настоящее время Linux использует 3 основных системы инициализации. Несколько лет назад был только один, SysVinit. Но SysVinit серьезно не хватало таких возможностей, как построение графиков зависимости сервисов, поэтому в большинстве дистрибутивов к настоящему моменту это устарело. В настоящее время большинство дистрибутивов переключаются на systemd . Хотя есть и выскочка .
Но вот ответ на ваш вопрос для каждой из 3 систем инициализации:
SysVinit
SysVinit в настоящее время используется Debian и RedHat. Хотя следующая версия RedHat (7) будет использовать systemd.
Универсальный способ включения служб SysVinit при загрузке заключается в символической ссылке на них /etc/rc3.d
(или /etc/rc2.d
). Все услуги можно найти в /etc/init.d
. Однако обратите внимание, что дистрибутивы часто имеют свой собственный инструмент для управления этими файлами, и этот инструмент следует использовать вместо этого. (Fedora / RedHat имеет service
и chkconfig
, Ubuntu имеет update-rc.d
)
Список услуг:
ls /etc/init.d/
Запустить сервис:
/etc/init.d/{SERVICENAME} start
или же
service {SERVICENAME} start
Остановить сервис:
/etc/init.d/{SERVICENAME} stop
или же
service {SERVICENAME} stop
Включить сервис:
cd /etc/rc3.d
ln -s ../init.d/{SERVICENAME} S95{SERVICENAME}
( S95
используется для указания порядка. S01 начнется раньше S02 и т. д.)
Отключить службу:
rm /etc/rc3.d/*{SERVICENAME}
Systemd
Наиболее заметным дистрибутивом, использующим systemd, является Fedora. Хотя это используется многими другими. Кроме того, с учетом того, что Debian решил использовать systemd вместо upstart, он станет де-факто выскочившей системой для большинства дистрибутивов (ubuntu уже объявила о том, что будет отказываться от upstart для systemd).
Список услуг:
systemctl list-unit-files
Запустить сервис:
systemctl start {SERVICENAME}
Остановить сервис:
systemctl stop {SERVICENAME}
Включить сервис:
systemctl enable {SERVICENAME}
Отключить службу:
systemctl disable {SERVICENAME}
Выскочка
Upstart был разработан ребятами Ubuntu. Но после того, как Debian решил использовать systemd , Ubuntu объявил, что они выпадут .
Upstart также кратко использовался RedHat, поскольку он присутствует в RHEL-6, но он обычно не используется.
Список услуг:
initctl list
Запустить сервис:
initctl start {SERVICENAME}
Остановить сервис:
initctl stop {SERVICENAME}
Включить сервис:
2 способа, к сожалению:
Там будет файл, /etc/default/{SERVICENAME}
который содержит строку ENABLED=...
. Измените эту строку на ENABLED=1
.
Там будет файл /etc/init/{SERVICENAME}.override
. Убедитесь, что он содержит start
(или отсутствует полностью), нет manual
.
Отключить службу:
echo manual > /etc/init/{SERVICENAME}.override
Примечание. Существует также система инициализации OpenRC, которая используется Gentoo. В настоящее время Gentoo является единственным дистрибутивом, который его использует, и он не рассматривается для использования и не поддерживается другими дистрибутивами. Так что я не рассматриваю его использование (хотя, если мнение таково, я могу добавить).