среда, 21 мая 2014 г.

Запуск демонов на Linux при старте системы

Идите сюда, если Вам нужно запустить какую-то службу (демон) при старте системы на Linux.

Принимаем во внимание то, что upstart скрипт (скрипт, позволяющий управлять запуском службы командами start, stop, status) уже написан и находится в директории /etc/init.d. В данной статье рассказывается лишь то, как настроить запуск службы с помощью этого скрипта при запуске системы.

1. Для выполнения задачи нам понадобится утилита sysv-rc-conf. Вот ссылка на официальный сайт http://sysv-rc-conf.sourceforge.net/

Установка простая. Печатаем в консоли:

  • sudo apt-get install sysv-rc-conf

Я натыкался еще на одну утилиту - rcconf. Но она показалась мне менее гибкой и дружелюбной.

2. Далее, с помощью этой программки можно легко установить службу на запуск при старте системы. Сделать это можно двумя способами:

  • печатая нудные команды в командой строке;
  • набрав команду sudo sysv-rc-conf наслаждаться работой в текстовом интерфейсе.
Я расскажу про текстовый интерфейс, а с командами Вы можете собственноручно ознакомиться на официальном сайте.

3. Итак, после ввода команды sudo sysv-rc-conf вы увидите такое окно:
Интерфейс удобный и понятный. В строках Вы видите список всех upstart скриптов в вашей системе. Но вот названия столбцов (какие-то цифры) приводят в ступор.

Немного теории. В Линуксе есть 10 уровней запуска системы, 7 из которых используются. Пронумерованы они с 0 до 6. Далее описаны действия, выполняемые на соответствующих уровнях:

  • 0 — выполняются действия по выключению системы.
  • 1 — однопользовательский режим (single user mode). Предназначен для различных административных действий по восстановлению системы. По своему смыслу аналогичен Safe Mode Windows, но полностью его не повторяет. На этом уровне выполнения система полностью сконфигурирована, но не запущен ни один сервис, а из пользователей может работать только один root.
  • 2 — не используется, но сконфигурирован как уровень выполнения 3. В RedHat и SuSE Linux сконфигурирован как уровень выполнения 3, но без поддержки сетевых файловых систем. В Ubuntu и Debian используется как многопользовательский режим.
  • 3 — многопользовательский режим (multiuser mode). Нормальный режим работы сервера.
  • 4 — В Slackware Linux используется для графического входа в систему. В RedHat и SuSE Linux не сконфигурирован.
  • 5 — В RedHat и SuSE Linux используется для графического входа в систему. В Slackware Linux не сконфигурирован.
  • 6 — выполняются действия по перезагрузке системы.


4. Все что нам нужно сделать, поставить крестики на тех уровнях, на которых мы хотим запускать наш демон. Просто перемещаемся стрелками на строку с нашим скриптом и выставляем крестики на уровнях с помощью клавиши Пробел. Для выхода нажимаем клавишу q. Все готово! После перезапуска системы демон будет запущен.

Еще немного теории. В папке /etc есть несколько директорий с названиями rcN.d, где N, это уровень запуска системы. Для того, чтобы служба запускалась при старте системы, нужно создать симлинки на upstart скрипт в этих папках, а в имени файла указать приоритет запуска. Программа sysv-rc-conf просто напросто предоставляет удобный интерфейс для этого процесса. Вот и все!)