Взято с: http://www.opennet.ru/base/sys/run_services_tips.txt.html
Наверное не для кого не секрет что скрипты запускаемых служб в 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. Синтаксис её использования весьма прост: chkconfig --list [имя сервиса] chkconfig --add <имя сервиса> chkconfig --del <имя сервиса> chkconfig [--level <уровни>] <имя сервиса> <on|off|reset|resetpriorities> Где имя сервиса - это имя исполняемого скрипта находящегося в /etc/rc.d/init.d Однако и тут есть небольшая хитрость, дело в том что скрипт запуска должен иметь специальный формат, например такой: #!/bin/sh # chkconfig: - 98 02 # description: Описание процесса # processname: Имя процесса # Source function library. if [ -f /etc/init.d/functions ] ; then . /etc/init.d/functions elif [ -f /etc/rc.d/init.d/functions ] ; then . /etc/rc.d/init.d/functions else exit 0 fi KIND="Имя_сервиса" start() { echo -n $"Starting $KIND services: " daemon /usr/local/sbin/исполняемый_файл echo } stop() { echo -n $"Shutting down $KIND services: " killproc исполняемый_файл echo } restart() { echo -n $"Restarting $KIND services: " killproc исполняемый_файл daemon /usr/local/sbin/исполняемый_файл echo } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac exit $? Главное тут в следующем, во первых скрипт должен иметь как минимум 3 возможных ключа запуска, это: start, stop, restart, поскольку именно эти основные команды используются для запуска, останова и перезапуска. Плюс ко всему к этому в самом начале файла пишутся те самые заветные цифры отвечающие за последовательность запуска: # chkconfig: - 98 02 Где 98 это номер в последовательности запуска, а 02 это номер последовательности останова. То есть, проще говорят этот скрипт запуститься как 98мым в последовательности очередей, а будет остановлен 2рым. Теперь практикум. Итак для того чтоб добавить скрипт и добавить его в автозагрузку надо произвести следующую последовательность действий: 1. Создать исполняемый скрипт по шаблону приведёному выше, заменив исполняемый_файл именем файла который надо запустить. 2. Разместить исполняемый скрипт в /etc/rc.d/init 3. Выполнить команду chkconfig --add исполняемый_скрипт 4. Выполнить команду setup или servicevonf (в зависимости от того работвете вы в графическом режиме или консоле ) и выбрать службу которая будет носить имя исполняемый_скрипт. Ну вот наверное и всё, если я ни где не ошибся.
Комментариев нет:
Отправить комментарий