Суббота, 20.04.2024, 04:49
Приветствую Вас Гость

SYSTEM ADMINISTRATOR

Меню
Разделы
Друзья
Реклама
Наша кнопка
Опрос
Нужен ли нам форум?
Всего ответов: 64
Главная » 2011 » Декабрь » 17 » Службы в Linux
06:48
Службы в Linux

Стиль SysV

Многие технические решения, которые используются в системе System V UNIX, разработанной AT&T, стали стандартом для современных версий UNIX и Linux. Одним из них является способ запуска системных служб, в том числе серверов. Согласно схеме загрузки SysV, каждой службе должен соответствовать специальный сценарий запуска, поддерживающий параметры start и stop. В зависимости от полученного параметра, сценарий запускает программу поддержки данной службы или завершает ее работу. Многие сценарии запуска поддерживают дополнительные параметры, например, restart, используемый при изменении конфигурации программы. При получении параметра restart сценарий завершает работу сервера, а затем снова запускает его.

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

Схема запуска SysV непосредственно связана с понятием уровня выполнения (или уровень исполнения) - runlevel. Уровень исполнения регламентирует функционирование системы, определяя, какие службы, поддерживаются системой. Каждому уровню выполнения соответствует набор сценариев запуска, который определяет службы, выполняющиеся в системе.

Расположение сценариев запуска и соглашения по их именованию

Несмотря на то, что основные принципы использования сценариев запуска SysV соблюдаются во всех системах, особенности такого использования могут различаться в зависимости от конкретного дистрибутивного пакета. В разных системах сценарии запуска размещаются в различных каталогах, имена сценариев могут различаться, но эти отличия, как правило, не существенны.

Уровень выполнения — это число от 0 до 6, которому соответствует конкретный набор действующих служб. При загрузке компьютер переходит на некоторый уровень выполнения, на котором выполняется определенный набор сценариев запуска. При необходимости Вы можете изменить уровень выполнения после загрузки компьютера.

Основные копии сценариев запуска хранятся в каталоге /etc/init.d. Каждый сценарий отвечает за запуск одного демона или определенной подсистемы. Сценарии каталога /etc/init.d способны запускать и останавливать отдельные службы, но, чтобы перейти на требуемый уровень, главный управляющий сценарий, выполняемый демоном init, должен получить дополнительную информацию о том, какие сценарии и с какими аргументами нужно запустить. Управляющий сценарий не просматривает непосредственно каталог init.d, а обращается к каталогу гсуровень.d, где уровень — это номер требуемого уровня выполнения, на который осуществляется переход (rc0.d, rc1.d и т.д.).

В большинстве дистрибутивных пакетов Linux действуют правила по именованию содержимого каталога ссылок SysV. Имя файла ссылки имеет вид С##имя, где С обозначает символ "S" или "К", ## — это число, состоящее двух цифр, а имя обычно совпадает с именем соответствующего файла в каталоге сценариев.

Например, сценарию kudzu на уровне 0 соответствует файл-ссылка K95kudzu

Как нетрудно догадаться, принцип именования несет на себе определенную смысловую нагрузку. Часть имени ссылки, следующая за С##, дает представление о действиях, выполняемых сценарием. Первый символ ("S" или "К") указывает, должен сценарий запускать программу ("S" — start) или завершать ее работу ("К" — kill) при переходе на данный уровень выполнения. Например, имя S95kudzu означает, сценарий kudzu должен быть вызван для запуска, а имя K95kudzu говорит о том, что работа должна быть завершена. Число, следующее за символом "S" или "К", определяет порядок запуска сценариев. Например, программы поддержки сетевого взаимодействия должны быть запущены раньше, чем сервер SSH. Чем меньше номер - тем ранее будет запущена служба. Аналогично определяется последовательность активизации ссылок, имена которых начинаются с символа "К".

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

Управление сценариями запуска вручную

Если вам необходимо разрешить или запретить запуск сервера с помощью сценариев SysV, вы можете сделать это, изменяя сценарии запуска или ссылки на них. Проще всего запретить запуск сервера, удалив соответствующий сценарий из каталога сценариев SysV. Этим вы добьетесь того, что сервер не будет присутствовать ни на одном из уровней исполнения системы, но такое решение нельзя назвать элегантным. Кроме того, если Вам потребуется не запретить, а разрешить выполнение сервера, вам все равно придется искать способы как это сделать.

Более приемлемое решение данной задачи — переименовать ссылку на сценарий запуска в каталоге, соответствующем требуемому уровню выполнения. Например, для того чтобы запретить выполнение сервера, надо переименовать ссылку, заменив символ "S" в начале ее имени на символ "К". Чтобы разрешить работу сервера, надо сделать обратную замену. Сложности, возникающие при этом, связаны с тем, что последовательность запуска серверов может отличаться от последовательности их завершения. Для того чтобы решить эту проблему, надо найти ссылки на этот сценарий в каталогах, соответствующих различным уровням запуска. Если хотя бы на одном уровне выполняется нужное вам действие, вы узнаете требуемый номер.

Например, в результате исполнения приведенной команды

find /etc/rc.d -name *kudzu -print

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

Полученные результаты позволяют выяснить, что kudzu запускается на уровне выполнения 4 и порядок запуска этого сервера определяется номером 05. Аналогично, работа сервера завершается на уровнях 0,1,2,3,5 и 6, и порядок завершения определяется номером 95. Если вы хотите запретить выполнение kudzu на уровне 4, Вам надо переименовать ссылку S05kudzu в каталоге, соответствующем этому уровню, и назначить ей имя K95kudzu.

Если вам нужно временно запустить или остановить сервер, не перезагружая компьютер, либо если вы захотите перезапустить сервер после изменения его конфигурационного файла, вы можете вызвать сценарий запуска вручную и передать ему параметр start или stoр.

service kudzu start

service kudzu stop

Чтобы узнать состояние службы на текущий момент, необходимо передать сценарию запуска параметр status.

service kudzu status

/etc/init.d/kudzu status

Большинство версий Linux при попытке завершить работу сервера выводит специальное сообщение. Кроме того, после остановки сервера отображается дополнительное сообщение о том, насколько успешно выполнена данная операция. При запуске сценария SysV появляется сообщение об успешном запуске сервера (Эти сообщения вы видите на экране при загрузке компьютера.)

Использование утилит управления сценариями запуска

Некоторые дистрибутивные пакеты включают специальные утилиты, которые упрощают управление сценариями запуска. Пользуясь этими утилитами, вы уменьшаете риск неправильно задать имя сценария. Так, например, изменяя набор серверов, выполняемых в системе, вручную, вы можете вместо S05kudzu случайно задать имя s05kudzu (т. е. вместо "S" в верхнем регистре задать "s" в нижнем регистре). При использовании специализированных утилит такая ситуация не возникнет. К сожалению, подобные утилиты присутствуют не во всех системах; чаще всего они входят в состав Red Hat и систем, созданных на ее основе. Перенос утилиты из одной системы в другую не дает желаемого результата, так как в разных системах расположение и имена сценариев запуска и ссылок SysV, а также номера, определяющие порядок запуска, могут различаться.

Использование chkconfig

Инструментальное средство chkconfig, предназначенное для управления сценариями запуска SysV, предоставляет пользователю низкоуровневый интерфейс. Вся информации, необходимая для выполнения задачи, задается в одной командной строке. Утилита chkconfig вызывается следующим образом :

Первый вариант вызова используется тогда, когда необходимо получить информацию о текущей конфигурации (опция --list), второй - когда добавить, третий - удалить ссылки из каталога ссылок SysV (соответственно опции --add и --del). Последний вариант вызова позволяет разрешить или запретить сценарий на некоторых (или на всех) уровнях выполнения (эта задача решается путем переименования ссылки SysV). Приведенные ниже примеры иллюстрируют использование данной команды. Предположим, что Вы хотите получить подробную информацию о конфигурации kudzu.

chkconfig --list kudzu

В результате утилита выводит информацию о состоянии kudzu на каждом из уровней выполнения. Проверить правильность полученных данных можно, воспользовавшись командой find. Если chkconfig отображает значение on, это свидетельствует о том, что имя ссылки начинается с символа "S", соответственно off означает, что имя ссылки начинается с символа "К". Если Вы выполните команду chkconfig --list, не указав имени сценария, chkconfig выведет информацию о состоянии всех сценариев запуска.

Удалять ссылки имеет смысл в том случае, если вы собираетесь запускать сервер с помощью суперсервера xinetd (inetd)  - либо локальных сценариев запуска. Для того чтобы выполнить обратные изменения, надо воспользоваться опцией --add.

Чаще всего при работе с chkconfig используются параметры on, off и reset. Они позволяют разрешить или запретить запуск сервера на указанном уровне выполнения, а также восстановить исходные установки для этого уровня. Если вы не укажете опцию --level, то изменения будут произведены на всех уровнях выполнения.

Просмотрев на каких уровнях запускается сервис sendmail, мы решили, что на уровне 2 его необходимо отключить. Затем мы снова проверили на каких уровнях запускается данный сервис. После этого мы решили, что он нам необходим на всех возможных уровнях исполнения. Обратите внимание, что на уровнях 0,1 и 6 он остается выключен, а на уровнях 2-5 включен. Чтобы изменения были произведены на уровнях 235, надо указать значение 235 опции --level. Если вы поэкспериментировали с установками и хотите вернуть их в исходное состояние, вам следует задать параметр reset. Эта команда вернет ссылки на сценарии запуска для сервера sendmail в первоначальное состояние. Для того чтобы восстановить установки лишь для отдельных уровней, следует задать опцию --level и указать в качестве ее значения один или несколько уровней.

При изменении конфигурации SysV посредством chkconfig состояние выполняющихся в системе серверов не изменяется. Например, если вы запретили запуск sshd, работа сервера не завершится. Чтобы это произошло, надо предпринять дополнительные действия, например, вызвать сценарий запуска SysV и передать ему опцию stop либо вручную остановить сервер.

Использование ntsysv

Программа ntsysv предоставляет пользователю интерфейс в виде текстового меню и позволяет управлять запуском серверов. Для того чтобы запустить программу, достаточно ввести ее имя, при необходимости можно задать опцию --level уровни; в качестве значения опции --level указывается один или несколько уровней выполнения, которые вы хотите изменить. Если вы не зададите эту опцию, ntsysv изменит только конфигурацию текущего уровня.

Программа ntsysv отображает сведения обо всех серверах, для которых созданы сценарии запуска SysV. Для того чтобы разрешить или запретить запуск сервера надо с помощью клавиш со стрелками выбрать сервер в меню и нажать клавишу пробела. Символ * слева от имени сервера указывает на то, что при переходе на данный уровень выполнения сервер будет запущен; отсутствие этого символа означает, что запуск сервера запрещен. После внесения изменений надо с помощью клавиши Tаb выбрать кнопку ОК и нажать клавишу Enter; в результате изменения будут сохранены, и выполнение программы завершиться.

Категория: *nix | Просмотров: 2683 | Добавил: AinCross | Теги: SysV, ntsysv, Службы в Linux | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Регистрация
Поиск
Пользовательский поиск
Реклама
Архив записей
Календарь
«  Декабрь 2011  »
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
262728293031
Считалки
Яндекс.Метрика

Онлайн всего: 1
Гостей: 1
Пользователей: 0