Запуск и остановка сервисов, настройка их автоматического запуска при загрузке системы.
Как правило, неинтерактивные программы — демоны или сервисы — должны запускаться при загрузке системы и корректно останавливаться при её выключении/перезагрузке. Для этого в *nix-системах используется система инициализации, в состав которой входит процесс init. Как говорилось ранее, процесс init запускается ядром операционной системы при загрузке системы. Далее этот процесс, согласно настройкам системы инициализации, запускает другие процессы, выполняющие настройку оборудования, проверку и монтирование файловых систем, запуск демонов, и т.д. Традиционной и широко распространённой в настоящее время системой инициализации является система sysvinit, представляющая собой достаточно сложную систему скриптов. Для описания состояния системы в sysvinit вводится понятия уровня загрузки (уровня выполнения). В любой момент времени система находится на некотором определённом уровне загрузки, и в ней выполняется соответствующий этому уровню набор сервисов. Имеется возможность отдать системе команду и перевести её с текущего уровня на другой. Управляет переключениями уровней загрузки процесс init. При переходе с одного уровня на другой init последовательно запускает скрипты, останавливающие работающие на текущем уровне загрузки системы сервисы, и затем запускает сервисы, которые должны работать на новом уровне. Уровней выполнения 7, из них: - 0 — уровень остановки системы. На этот уровень система переходит по командам poweroff, shutdown, halt. Если подобное поддерживает аппаратная платформа, то после перехода на этот уровень компьютер выключается. - 1 — однопользовательская система. Используется только в режиме восстановления системы, обычно на этом уровне запускается только командный интерпретатор суперпользователя. - 2 — многопользовательская система без сетевой поддержки. Как правило, в настоящее время этот уровень не используется. - 3 — многопользовательская система. Это основной уровень работы системы, используемый по умолчанию. - 4 — предоставлено для настройки конкретных систем. Обычно то же самое, что и уровень 3, и не используется. - 5 — многопользовательская система с поддержкой графики. Изначально для настольных системы предусматривалась загрузка на 3-ий уровень, если не требовался запуск графической среды, и на 5-ый — если графическая среда использовалась. В настоящий момент в настольных системах графическая среда запускается и на 3-ем уровне, т.е. 5-ый уровень практически не используется. - 6 — уровень перезагрузки системы. На этот уровень система переходит по командам reboot и shutdown -r. После завершения перехода компьютерная система должна перезагрузиться. Как правило, переходы между уровнями в работающей системе не производятся, и нужны только при её загрузке или остановке. В Ubuntu и ряде других дистрибутивов сервисы запускаются скриптами, расположенными в каталоге /etc/rc.d/init.d/. На этот каталог есть символьная ссылка /etc/init.d/, использование путей /etc/init.d/ и /etc/rc.d/init.d/ равнозначно. Для управления тем, какой скрипт и на каком уровне запускается, используется команда chkconfig. Посмотреть, какие сервисы должны выполняться при загрузке системы, можно командной chkconfig --list: # chkconfig --list crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off fbsetfont 0:off 1:off 2:off 3:off 4:off 5:off 6:off ifrename 0:off 1:off 2:on 3:on 4:on 5:on 6:off klogd 0:off 1:off 2:on 3:on 4:on 5:on 6:off lighttpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off portmap 0:off 1:off 2:off 3:off 4:off 5:off 6:off random 0:off 1:off 2:on 3:on 4:on 5:on 6:off rawdevices 0:off 1:off 2:off 3:off 4:off 5:off 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off syslogd 0:off 1:off 2:on 3:on 4:on 5:on 6:off Например, демон sshd выключен на уровнях 0, 1 и 6, и включён на уровнях 2, 3, 4 и 5. Посмотреть на состояние конкретного сервиса можно, указав его имя: # chkconfig --list lighttpd lighttpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off Как видно, сервис lighttpd выключен и при перезагрузке системы запускаться не будет. Для включения сервиса следует выполнить команду # chkconfig lighttpd on # chkconfig --list lighttpd lighttpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off Выключается сервис командой chkconfig <имя сервиса> off. Включение и выключение сервисов в конфигурации запуска системы не запускает и не останавливает их в работающей системе. Как правило, перезагрузка *nix-систем — это очень редкое и обычно вынужденное событие. Для запуска и остановки сервисов в работающей системе используется команда service. Формат её вызова: service <имя сервиса> <команда>. Имя сервиса то же, что и для команды chkconfig (и, на самом деле, это имя скрипта из /etc/init.d/). Все сервисы поддерживают команды start (для запуска неработающего сервиса), stop (для остановки работающего сервиса), restart (для остановки и последующего запуска сервиса), status (для получения статуса сервиса). Возможны и дополнительные команды, которые можно узнать, запустив service <имя сервиса> без указания команды. Подавляющее большинство скриптов в /etc/init.d отслеживают состояние запускаемых ими программ и не позволят повторно запустить их. Например, для сервиса lighttpd: # service lighttpd Usage: lighttpd {start|stop|restart|condstop|condrestart|condreload|reload|status} # service lighttpd status lighttpd is stopped # service lighttpd start Starting lighttpd service: [ DONE ] # service lighttpd status lighttpd is running [root@lab-100 ~]# service lighttpd restart Stopping lighttpd service: [ DONE ] Starting lighttpd service: [ DONE ] # service lighttpd status lighttpd is running # service lighttpd stop Stopping lighttpd service: [ DONE ] # service lighttpd status lighttpd is stopped # service lighttpd restart Service lighttpd is not running.[PASSED] Starting lighttpd service: [ DONE ] # Видно, что сервис lighttpd поддерживает команды start, stop, restart, status. Команды condstop, condrestart и condreload в основном предназначены для перезапуска сервиса при обновлении пакета с ним. Изначально сервис не был запущен. По команде service lighttpd start он был запущен, что подтвердил последующий вывод команды Помимо sysvinit существуют и другие системы инициализации: Upstart, Runit, systemd, и т.д. Выбор той или иной системы инициализации зависит от предпочтений составителей конкретного дистрибутива и направленности конкретного дистрибутива для решения тех или иных задач. Описанная выше sysvinit отличается малой требовательностью к ресурсам для своей работы, и широко используется для серверных и встраиваемых систем. Основными её недостатками являются последовательное выполнение операций запуска или остановки демонов в процессе перехода с одного уровня выполнения на другой, и сложность задания правильной последовательности запуска и остановки зависящих друг от друга демонов. Для современных настольных Linux-систем в настоящее время преимущественно выбирается система инициализации systemd, обеспечивающая параллельный запуск демонов при загрузке системы и, тем самым, существенно уменьшающая время загрузки. Для просмотра и управления конфигурацией в systemd используются консольная команда systemctl и её графический аналог systemadm, хотя в целях совместимости поддерживаются также скрипты sysvinit в /etc/rc.d/init.d/ и команды service и chkconfig.
Популярное: Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Почему стероиды повышают давление?: Основных причин три... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (173)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |