From: Тёмный <dark705r@mail.ru.>
Newsgroups: email
Date: Mon, 15 Jan 2007 14:31:37 +0000 (UTC)
Subject: Хитрости запуска служб в Linux.
Наверное не для кого не секрет что скрипты запускаемых служб в Linux
располагаются в /etc/rc.d/init.d или /etc/init.d в зависимости от
дистрибутива. Для того чтобы скрипт запускался автоматически во время
запуска системы надо создать символическую ссылку на скрипт и разместить
её в каталоге /etc/rc.d/rcN.d или /etc/rc.d/rcN.d, где N –
соответствует уровню выполнения скрипта.
Уровень 0
остановка системы (halt) - работа системы должна быть прекращена;
Уровень 1
однопользовательский режим работы - система инициализирует минимум
служб и даёт единственному пользователю (как правило,
суперпользователю) без проведения аутентификации командную строку.
Как правило, этот режим используется для восстановления системы;
Уровень 2
многопользовательский режим - пользователи могут работать на разных
терминалах, вход в систему с процессом аутентификации;
Уровень 3
многопользовательский сетевой режим - в отличие от предыдущего
уровня, осуществляется настройка сети и запускаются различные
сетевые службы;
Уровень 4
не имеет стандартного толкования и практически не используется;
Уровень 5
запуск графической подсистемы - по сравнению с уровнем 3
производится также старт графической подсистемы X11 , и вход в
систему осуществляется уже в графическом режиме;
Уровень 6
перезагрузка системы - при включении этого режима останавливаются
все запущенные программы и производится перезагрузка.
Чаще всего во время загрузке система использует уровни загрузки 3 или 5.
Однако есть некоторая хитрость в названии самой символической ссылки, о
которой многие умалчивают, и которой я хочу рассказать. Например:
/etc/rc.d/rc0.d/K60crond и /etc/rc.d/rc3.d/S40crond, указывающие на один
скрипт /etc/init.d/crond службы системного журнала. Скрипт, начинающийся
с "K" соответствует останову службы, а "S" - запуску. Числа, следующие
перед именем службы задают порядок запуска скриптов в директории.
Например, скрипт /etc/rc.d/rc3.d/S34syslogd будет запущен до скрипта
/etc/rc.d/rc3.d/S40crond, тогда как /etc/rc.d/rc3.d/K60crond до
/etc/rc.d/rc3.d/K66syslogd. Можно заметить, что сумма чисел для одной
службы равна 100 - это позволяет упорядочить все скрипты в порядке
старта, обратном порядку завершения. Создавать самому символические
ссылки весьма утомительно, и для этого лучше использовать специальную
утилиту chkconfig.
Главное тут в следующем, во первых скрипт должен иметь как минимум 3
возможных ключа запуска, это: start, stop, restart, поскольку именно
эти основные команды используются для запуска, останова и перезапуска.
Плюс ко всему к этому в самом начале файла пишутся те самые заветные
цифры отвечающие за последовательность запуска:
# chkconfig: - 98 02
Где 98 это номер в последовательности запуска, а 02 это номер
последовательности останова.
То есть, проще говорят этот скрипт запуститься как 98мым в
последовательности очередей, а будет остановлен 2рым.
Теперь практикум.
Итак для того чтоб добавить скрипт и добавить его в автозагрузку надо
произвести следующую последовательность действий:
1. Создать исполняемый скрипт по шаблону приведёному выше, заменив
исполняемый_файл именем файла который надо запустить.
2. Разместить исполняемый скрипт в /etc/rc.d/init
3. Выполнить команду chkconfig --add исполняемый_скрипт
4. Выполнить команду setup или servicevonf (в зависимости от того
работвете вы в графическом режиме или консоле ) и выбрать службу которая
будет носить имя исполняемый_скрипт.