Cтартовые сценарии осуществляют запуск и останов системных служб — программ,
    предоставляющих различные “услуги” (сервисы)
    пользователям системы. В качестве примера системных служб можно привести
    syslog — службу инициализации
    системного журнала или network — службу
    инициализации сети.
  
Для управления списком служб, которые должны запускаться при старте системы (а точнее —
    при её загрузке на том или ином уровне выполненения), используется команда chkconfig
    вида chkconfig имя_службы
      команда. Например, командой
    chkconfig sendmail
    on запускается почтовый сервер, осуществляющий
    отправление и достаку почты по протоколу SMTP, Более подробно работа команды
    chkconfig рассмотрена ниже.  
  
Для запуска, перезапуска или останова служб в процессе работы
    применяется утилита service. Её общий вид
    следующий: service
    имя_службы{start|stop|reload|restart|status}. Например,
    если понадобилось перезапустить службу системного журнала, это
    можно сделать следующим образом:
  
# service syslogd restart Stopping system logger service: [ DONE ] Starting system logger service: [ DONE ]
Обратите внимание, что для управления службами необходимы права суперпользователя.
Управление системными службами при помощи утилит chkconfig и service — наиболее простой в повседневной работе вариант. Далее речь пойдет о более сложном и универсальном способе — работе со стартовыми сценариями.
Стартовые сценарии ALT Linux устроены примерно так же, как в
    RedHat Linux, по простой “.d”-схеме. Суть её в
    следующем. Любое атомарное действие по изменению способностей
    системы — запуск и останов определённой службы,
    автоматическое изменение или сохранение настроек и т. п. —
    оформляется в виде командного сценария в каталоге
    /etc/rc.d/init.d. К такому сценарию
    предъявляются определённые требования: как минимум, он должен
    распознавать в качестве первого параметра слова
    start и stop. Будучи
    запущен с параметром start, этот сценарий
    выполняет действия по запуску службы или активации настроек, а с
    параметром stop он останавливает службу или
    записывает активные настройки в файл.
  
Когда система загружается, процесс init
    выполняет сначала сценарий
    /etc/rc.d/rc.sysinit, а затем —
    /etc/rc.d/rc,
    где номерномер соответствует
    уровню выполнения (профилю использования
    системы, обычно он равен 3, “многопользовательский с
      сетью” или 5, “многопользовательский с сетью и
      графической средой”). Всё это сводится к выполнению в
    лексикографическом (грубо говоря,
    алфавитном) порядке всех сценариев из
    каталога
    /etc/rc.d/rc, 
    начинающихся на букву номер.d/K (Kill) с параметром
    stop и всех
    сценариев, начинающихся на S (Start) с
    параметром start. Принято после буквы
    K или S вставлять двузначное
    число, а затем — имя службы, а сами файлы в
    rc делать
    символьными ссылками на сценарии в
    номер.d//etc/rc.d/init.d/ (точнее, на файлы в
    ../init.d/, так достигается совместимость с
    системами, в которых init.d и
    rc*.d лежат не в
    /etc/rc.d, а в /etc или
    вообще где угодно). Останов системы рассматривается как переход на
    уровень выполнения 0, а перезагрузка — на
    уровень выполнения 6, так что имена файлов в
    каталогах rc0.d и rc6.d
    начинаются сплошь на K, кроме
    S00killall, S01reboot
    или S01halt. Таким образом достигается
    строгий порядок выполнения действий без создания единого
    стартового сценария (как это делалось, например, в ранних версиях BSD).
  
В ALT Linux эти рекомендации носят
    обязательный характер, потому что размещение
    сценариев в каталогах rc*.d происходит не
    вручную, а автоматически. Для этого в начало каждого сценария
    вносятся комментарии особого вида: #
      description:, после которого следует краткое описание,
    и chkconfig:, после которого следует три числа.
    Первое — набор цифр (без пробелов), соответствующих уровням
    выполнения, на которых сценарий будет
    использоваться (т. е. создаваться ссылка, начинающаяся на
    S). Второе — двузначное число, которое
    будет добавляться в имя ссылки после S, а
    третье — двузначное число, которое будет добавляться в имя
    ссылки после K.
  
#! /bin/sh # # crond Start/Stop the cron clock daemon. # # chkconfig: 2345 40 60 # description: cron is a standard UNIX program that runs user-specified \ # programs at periodic scheduled times. vixie cron adds a \ # number of features to the basic UNIX cron, including better \ # security and more powerful configuration options. # processname: crond # config: /etc/crontab # pidfile: /var/run/crond.pid
Команда chkconfig
      имя_службы on автоматически
    создаёт ссылки типа S для всех уровней
    выполнения, указанных в первом числе поля
    chkconfig:, а для остальных уровней выполнения
    — ссылки типа K. Команда
    chkconfig имя_службы
      off заводит во всех каталогах
    rc*.d ссылки типа K. Стоит
    заметить, что другие поля похожего формата остались в стартовых
    сценариях от других, более сложных систем автоматической загрузки
    и в ALT Linux не используются. В приведённом
    примере сценарий netfs (монтирование сетевых
    файловых систем) запускается на уровнях 3, 4, и 5, причём при
    запуске служба имеет номер 25, а при останове — 75.
  
$ grep chkconfig: /etc/rc.d/init.d/netfs # chkconfig: 345 25 75 $ chkconfig —list netfs netfs 0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл $ ls -l /etc/rc.d/rc*.d/*netfs* lrwxrwxrwx 1 root root 15 Авг 15 19:06 /etc/rc.d/rc0.d/K75netfs -> ../init.d/netfs lrwxrwxrwx 1 root root 15 Авг 15 19:06 /etc/rc.d/rc1.d/K75netfs -> ../init.d/netfs lrwxrwxrwx 1 root root 15 Авг 15 19:06 /etc/rc.d/rc2.d/K75netfs -> ../init.d/netfs lrwxrwxrwx 1 root root 15 Авг 15 19:06 /etc/rc.d/rc3.d/S25netfs -> ../init.d/netfs lrwxrwxrwx 1 root root 15 Авг 15 19:06 /etc/rc.d/rc4.d/S25netfs -> ../init.d/netfs lrwxrwxrwx 1 root root 15 Авг 15 19:06 /etc/rc.d/rc5.d/S25netfs -> ../init.d/netfs lrwxrwxrwx 1 root root 15 Авг 15 19:06 /etc/rc.d/rc6.d/K75netfs -> ../init.d/netfs
Кроме того, правила оформления стартовых сценариев ALT Linux
    рекомендуют, чтобы они распознавали ещё один параметр —
    status, позволяющий определить состояние
    службы (по крайней мере, узнать, запущена ли она или нет). Корректный
    стартовый сценарий всё равно должен уметь это определять, иначе
    попытка запуска K-сценария при
    остановленной службе будет выдавать сообщение
    об ошибке, даже если спецификой службы это предусмотрено.
    Например, супердемон xinetd при запуске
    проверяет, зарегистрирована ли в нём хотя бы одна сетевая служба,
    а не найдя таковых, завершает работу. Для отражения того, что
    запуск службы прошёл успешно, в ALT Linux заведён специальный
    каталог, /var/lock/subsys, в котором
    стартовые сценарии создают т. н. lock-файлы. Если lock-файл
    службы есть в этом каталоге, значит, она запущена, и
    K-сценарий действительно должен её
    останавливать. Поэтому рекомендуется запускать и останавливать
    системные службы не напрямую, запуском демонов, и даже не путём
    запуска сценария из init.d, а с помощью
    утилиты service. Впрочем, вызов
    service имя_службы
      команда эквивалентен
    /etc/rc.d/init.d/ 
      имя_службыкоманда, просто командная
    строка выходит короче.
  
При написании стартового сценария рекомендуется пользоваться
    файлом /etc/init.d/functions, в котором
    определены основные функции для работы с
    /var/lock/subsys и унифицированным выводом
    сообщений на экран. Обратите внимание, что по соображениям
    совместимости обычно используется имя каталога
    /etc/init.d, а не
    /etc/rc.d/init.d, при этом первое имя —
    всего лишь символьная ссылка на второе.