Итак, в этой статье поговорим об авто запуске демонов в операционной системе Linux Ubuntu. Случается такое, что необходимо подкорректировать автозапуск некоторых демонов в системе и создаётся резонный вопрос «как это сделать».
Статью я условно разделил на 2 части. В первой я расскажу как всё сделать быстро, а во второй мы разберём всё подробно.
Так вот, всё достаточно просто. Пойдём по пути меньшего сопротивления и познакомимся с такой замечательной утилитой как rcconf. В базовой комплектации ОС её нет, поэтому установим её:
sudo apt-get install rcconf
или так:
sudo apt-get install dialog rcconf
Выдержка из мануала говорит нам следующее:
rcconf - Debian Runlevel configuration tool
т.е. при переводе на русский как то так:
rcconf - Debian уровень запуска конфигурационный инструмент
В общем при помощи этой программы можно легко управлять запуском программ демонов в вашей системе. После запуска запускаем её:
sudo rcconf
и отключаем/включаем всё, что нам надо при запуске системы. Отмечаем звездочками нужные демоны, с ненужных их снимаем и перезагружаемся. Программа имеет простой и понятный консольный интерфейс, поэтому там разобраться не трудно.
Так же ниже для полноты даю информацию по ключам запуска rcconf.
- —expert включает в список важные системные демоны
- —now останавливает или запускает демоны сразу же по закрытии rcconf
- —dialog | —whiptail | —notermcheck выбор внешнего вида
- —verbose — выводит дополнительную информацию
- —config *config_file* — позволяет использовать файл настроек(Сгенерировать его можно c помощью —list)
- —list — выводит все демоны и их статусы
Как видите всё просто. Программа просто великолепная.
Подробнее о запуске программ/демонов в Linux
Вообще в Linux так же как и в Microsoft Windows много способов автоматического запуска программ.
Если подробнее, то существуют несколько способов сделать автозапуск программ/демонов в Linux:
- записать вызов программы/скрипта запуска в /etc/rc.local в фоновом режиме (&) (в разных дистрибутивах может лежать в разных местах, например, /etc/rc.d/rc.local) с перенаправленными потоками ввода/вывода в /dev/null. Например, «/home/user/my_prog 1 > /dev/null 2 > /dev/null &». Также, дополнительно, можно воспользоваться командой nohup;
- внести вызов в /etc/inittab, согласно правилам его оформления. В отличие от первого способа тут можно указать уровень запуска для программы;
- написать скрипт, позволяющий запускать/останавливать/перезапускать программу как демона, а также получать информацию о её состоянии. Именно этот способ чаще всего и используется и является как бы стандартом качества программы, об этом и поговорим.
Так вот, в каталоге /etc/init.d содержатся, так называемые, запускные скрипты всех демонов, а также два файла (skeleton и README) для желающих написать себе свой запускной скрипт, сейчас же это выходит за рамки этой статьи. Важно различать директории /etc/init.d и /etc/init т.к. это далеко не одной и тоже, это неспроста. В первой лежат именно запускные скрипты, а во второй инициализационные скрипты. В общем в этих папках вы найдёте файлы автоматического запуска многих программ/демонов. Можно вообще просто удалить/переименовать или изменить содержимое конкретного файла нужной программы, что бы поменять тип её запуска или вообще отменить его.
После создания в нужной папке такого скрипта его необходимо прописать в автозагрузке. Для этого используется утилита update-rc.d, хотя в разных дистрибутивах и версиях могут быть другие варианты. К примеру в Debian 6 stable и выше вместо неё используется программа insserv, но речь сейчас о update-rc.d. Вот описание из её мануала:
update-rc.d - install and remove System-V style init script links
что в переводе:
update-rc.d - установка и удаление ссылок скриптов инициализации в стиле System-V
Т.е. эта программа устанавливает и удаляет те самые скрипты. Значит для управления нужным скриптом инициализации/запуска используется следующий синтаксис:
update-rc.d <имя_скрипта> defaults (или insserv <имя_скрипта> для debian 6 stable и выше) Удалить из автозагрузки можно так: update-rc.d -f <имя_скрипта> remove (или insserv -r <имя_скрипта> для debian 6 stable и выше)
Т.е. теперь, когда мы знаем как всё это устроено, мы можем управлять автозагрузкой загрузочных/инициализационных скриптов. Как правило файлы этих скриптов называются так же как и программа/демон для которой они были написаны, во всяком случае это правило хорошего тона. Значит находим в директориях /etc/init.d или /etc/init необходимый файл и удаляем/добавляем его при помощи программы update-rc.d с синтаксисом описанным выше.
Вообще, как я же говорил, это далеко не единственный способ запуска программы/демона, но об этом как-нибудь патом.
На этом пожалуй всё, благодарю за внимание.