Создание демонов в Linux
В статье показано как создать демона в Linux.
Демон или (от анг. daemon) это программа в системах класса UNIX, запускается самой ОС и работает в фоновом режиме без взаимодействия с пользователем. Демоны обычно запускаются во время загрузки системы.
Для создания демона необходимо выполнить установку ПО и настроить его автозагрузку при старте системы. Обычно если
устанавливаемая программа предназначена для использования в качестве демона, то соответствующие инструкции выполняются в автоматическом режиме и не требуют вмешательства.
Имеется несколько вариантов автоматического запуска демонов в Unix подобных системах. Например, для сервера Ubuntu без графического интерфейса используется классический вариант помещения системных файлов в папку /etc/init.d.
Соответственно в папках:
/etc/rc0.d, размещаются файлы, которые выполняются автоматически при запуске
/etc/rc1.d, размещаются файлы, которые выполняются автоматически при остановке системы
Такие файлы запуска принято называть с символа S (от анг. Start), а останова — с символа K (от анг. Kill); после этого символа указывается число, определяющее порядковый номер запуска и остановки). Для запуска службы в эти папки просто помещают ссылки
на командный файл запуска в папке /etc/init.d.
Такие ссылки создать можно и вручную, но правильней использовать команду update-rc.d. Эта утилита автоматически создает ссылки при установке демона или удаляет их в противном случае. Для создания демона достаточно выполнить:
update-rc.d файл_запуска defaults
С ключом remove эта команда удаляет соответствующие ссылки. Следующий пример показывает отключение демона apache:
sudo update-rc.d -f apache2 remove
Следует учесть, что сценарии запуска демона, которые расположены в директории /etc/init.d, должны создаваться по правилам, для того чтобы можно было применять типовые команды для запуска, остановки демона и т. д. Обычно такие сценарии поставляются вместе с ПО, но если они отсутствуют, то в качестве шаблона используют файл /etc/init.d/skeleton.
Также в этих сценариях имеются указания о зависимостях служб (какие демоны необходимо запустить до старта данного демона и остановить в других случаях). Эти указания обрабатываются командой update-rc.d, которая присваивает запускающим сценариям соответствующий последовательный номер старта.
Демон должен сохранить свой PID в файл, для ого чтобы потом можно было его корректно остановить.