The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Хитрости запуска служб в Linux. (service init linux)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: service, init, linux,  (найти похожие документы)
Автор: Тёмный <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 &#8211; соответствует уровню выполнения скрипта. Уровень 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 (в зависимости от того работаете вы в графическом режиме или консоли) и выбрать службу, которая будет носить имя исполняемый_скрипт. Ну вот наверное и всё, если я нигде не ошибся.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, null (??), 08:17, 16/01/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это для SysteV стиля запуска ? А для BSD-стиля ? Или для initNG ? Кажись, не подойдёт.
     
     
  • 2.8, Тмный (ok), 01:43, 11/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Да именно для  SysteV :) initNG и BSD системы импользуют совсем другой сценарий загрузки
     

  • 1.2, RedStalker_Mike (??), 11:46, 16/01/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это вообще преимущественно для систем, которые на редхате основаны так или иначе.
     
  • 1.3, 1 (??), 13:31, 16/01/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а если 99 уже есть а надо еще 2 добавить? тогда как?
     
  • 1.4, 1 (??), 13:32, 16/01/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    именно в конец добавить
     
     
  • 2.6, Аноним (-), 22:18, 16/01/2007 [^] [^^] [^^^] [ответить]  
  • +/
    99ый номер именуйте в S99abra
    остальные два за ним в виде S99blabla, S99coolcool

    т.е проверка идет и по имени скрипта в алфавитном порядке

     

  • 1.5, vass (?), 17:01, 16/01/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Опечатка в первом параграфе:
    "/etc/rc.d/rcN.d или  /etc/rc.d/rcN.d"
     
  • 1.7, exZhuk (?), 15:42, 05/03/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Vse rabotaet no sluzhba avtomaticheski ne zapuskaetsja, rjadom so statusom stoit * i napisano chto sluzhba razreshena no ne zapushena  и запускается отлично из окна управления службами... где и что поставить что бы она запускалась сама сразу?, может у неё прав нету и поэтому я только рутом её могу запустить?
     
  • 1.9, Buboni (?), 07:38, 04/09/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сделал всё как тут написано выдает СЛЕДУЮЩЕЕ
    bash /atc/rc.d/init.d/restartdЖ /bin/sh:^M плохой итерпретатор: нет такого файла или каталога

    Может подскажете

     
     
  • 2.10, Hyper (??), 09:46, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Столкнулся с такой же ситуацией. Скрипт писал под виндой в блокноте, затем скопировал в linux, оказалось перед каждым переводом строки стоит еще один символ (скорее всего возврат коретки, но в общем в суть символа не вникал), вот из-за него то и не может распознаться указанный интерпритаор. Удаление лишних символов помогло.
     
  • 2.11, Hate (ok), 10:04, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Сделал всё как тут написано выдает СЛЕДУЮЩЕЕ
    >bash /atc/rc.d/init.d/restartdЖ /bin/sh:^M плохой итерпретатор: нет такого файла или

      На гуггле забанили? Поискать самому, почитать? Не? Тогда сиди на своем виндогавне и наслаждайся.

      

     
     
  • 3.12, nowhereman (??), 16:14, 04/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    всегда веселили "типа гуру", которые на любой вопрос орут "сиди в своем %%%" и отбивают желание учиться и что-то у них спрашивать. Ну не знал человек, что винда добавляет не один символ, а два (перевод строки-возврат каретки), так что ж его ругать за это, по-человечески нельзя объяснить!
     
  • 2.13, Ruzel.Z (?), 02:52, 19/02/2013 [^] [^^] [^^^] [ответить]  
  • +/
    /bin/sh:^M плохой итерпретатор - обрати на это внимание, ругается  на интерпритатор коим в твоем случае является bash,  а ему в свою очередь мешает та злосчастная "^M" - которая присутствует в твоем скрипте, ..
    .. и , да, совет на будущее - работая с *nix  не мешай в "коктейль" Винду ко всему прочему с её философией и кодировками, тогда всё будет на Ура.
    Надеюсь ты понял откуда у Тебя прореха в скрипте!
     

  • 1.14, Euvgen (?), 04:04, 22/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    нашел простой вариант автозапуска на Debian, ну и может помоч на других системах Linux. Может комуто поможет:
    http://so4net.com/index.php/ru/blog/80-debian
     
  • 1.15, Alexander (??), 15:34, 29/10/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что за команда sutup в п.4? Тут же "servicevonf" это serviceconf.
     
  • 1.16, Alexander (??), 15:35, 29/10/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    *setup
     
  • 1.17, sergey (??), 00:51, 27/12/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Начинаю осваивать Ubuntu 14.10 прошла неделя и напортачил,похоже с загрузками,до конца не разобрался как и что.Теперь при запуске появляется серый экран,строки для ввода пароля тоже нет.Решил переустановить систему не помогло.За ранее благодарю    
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру