В Windows у меня есть менеджер сервисов, где я вижу все системные сервисы, которые можно запустить через саму Windows, я настраиваю пользователя, которого он использует, управление правами там, и я могу передавать переменные и некоторую другую информацию сервисам , Я могу назвать их, и я могу создавать дубликаты служб одной программы и так далее. Так что у меня есть основной инструмент управления в Windows.
Как я могу сделать то же самое в Linux? Как я могу запустить «svnserve» при запуске или как настроить службы для работы в особом контексте. Как я могу просмотреть все «запрограммированные» услуги?
server
команду в Debian, см. Unix.stackexchange.com/q/226089/130402Ответы:
В настоящее время 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
)Список услуг:
Запустить сервис:
или же
Остановить сервис:
или же
Включить сервис:
(
S95
используется для указания порядка. S01 начнется раньше S02 и т. д.)Отключить службу:
Systemd
Наиболее заметным дистрибутивом, использующим systemd, является Fedora. Хотя это используется многими другими. Кроме того, с учетом того, что Debian решил использовать systemd вместо upstart, он станет де-факто выскочившей системой для большинства дистрибутивов (ubuntu уже объявила о том, что будет отказываться от upstart для systemd).
Список услуг:
Запустить сервис:
Остановить сервис:
Включить сервис:
Отключить службу:
Выскочка
Upstart был разработан ребятами Ubuntu. Но после того, как Debian решил использовать systemd , Ubuntu объявил, что они выпадут .
Upstart также кратко использовался RedHat, поскольку он присутствует в RHEL-6, но он обычно не используется.
Список услуг:
Запустить сервис:
Остановить сервис:
Включить сервис:
2 способа, к сожалению:
Там будет файл,
/etc/default/{SERVICENAME}
который содержит строкуENABLED=...
. Измените эту строку наENABLED=1
.Там будет файл
/etc/init/{SERVICENAME}.override
. Убедитесь, что он содержитstart
(или отсутствует полностью), нетmanual
.Отключить службу:
Примечание. Существует также система инициализации OpenRC, которая используется Gentoo. В настоящее время Gentoo является единственным дистрибутивом, который его использует, и он не рассматривается для использования и не поддерживается другими дистрибутивами. Так что я не рассматриваю его использование (хотя, если мнение таково, я могу добавить).
источник
chkconfig
иupdate-rc.d
упоминаются. Смотрите второй абзац под SysVinit :-)В разных дистрибутивах используются разные механизмы управления сервисами. Программное обеспечение для управления службами называется init , после традиционного имени самого первого процесса (с идентификатором процесса 1), который отвечает за запуск других.
Debian использует традиционный вариант init для SysVinit . В этой системе в каталоге есть набор сценариев
/etc/init
(это и другое расположение может незначительно отличаться в разных дистрибутивах, использующих SysVinit). Эти сценарии вызываются не напрямую, а через символические ссылки в каталогах/etc/rc?.d
. Именно наличие и название этих символических ссылок определяют, когда запускаются службы. Для получения более подробной информации прочитайте главу об инициализации в Справочнике по Debian .Посмотрите,
/etc/rc?.d
чтобы увидеть, какие услуги уже присутствуют. Буква или цифра перед точкой - это уровень запуска; записи, имя которых начинается сS
, выполняются с аргументомstart
при входе в уровень выполнения, а записи, имя которых начинается сK
, выполняются при выходе из уровня выполнения. Обычная последовательность уровней запуска: S во время загрузки (так/etc/rcS.d/S*
выполняются), затем 2 (так/etc/rc2.d/S*
выполняются). Во время выключения/etc/rc2.d/K*
выполняются, затем уровень запуска переключается на 0 (или 6 для перезагрузки).Короче говоря, если вы хотите создать скрипт запуска для нового сервиса:
/etc/init.d
. Этот сценарий должен принимать один аргумент , который может бытьstart
,stop
,force-reload
,restart
, или ( по желанию)reload
илиstatus
. Разница междуreload
иrestart
заключается в том, чтоrestart
это эквивалентноstop
последующему, вstart
то время какreload
перезагружает конфигурацию, ничего не останавливая (если служба поддерживает это);force-reload
делает,reload
если доступно иrestart
иначе. Смотрите примеры существующих файлов и Выполнение сценариев во время загрузки с Debian .update-rc.d
чтобы создать символические ссылки для запуска и остановки вашего сервиса. Большинство сервисов работают на уровнях выполнения 2, 3, 4 и 5.Обратите внимание, что для предоставления доступа SVN может быть проще настроить Apache и использовать протокол HTTP или HTTPS. Это имеет побочное преимущество - возможность быстрого просмотра хранилища через веб-браузер.
источник
От традиционного Unix-фона нет ничего особенного в услугах. Сервисы - это просто процессы, но с двумя исключениями: им не нужен терминал, и они запускаются при загрузке. как они запускаются при загрузке, зависит от init (который может быть sysv init, bsd init, upstart, systemd или что-то еще; проверьте страницу man для init) и используете ли вы оболочку для задачи или для конфигурации init. Ничто не мешает вам запускать службу из терминала, на самом деле это обычное явление для целей тестирования.
источник