Демон: фоновый процесс в Unix¶
Демон (от англ. daemon) — в операционных системах семейства Unix и Unix-подобных системах фоновый процесс, запускаемый системой или пользователем и работающий без непосредственного взаимодействия с пользователем. Демоны обычно запускаются при загрузке системы, выполняют служебные функции (сетевые службы, планировщики, системный журнал) и продолжают работать до завершения системы или явной остановки. Термин происходит от аббревиатуры «Disk And Execution MONitor» (дисковый и исполнительный монитор), введённой в Массачусетском технологическом институте в 1963 году для проекта MAC, хотя существует и популярная трактовка, связывающая название с демонами из мифологии и фольклора — существами, выполняющими скрытую работу.
¶История
Концепция фоновых процессов возникла в ранних мультипрограммных системах, где требовалось выполнение задач без участия оператора. В Unix демоны появились в начале 1970-х годов. Одним из первых стал процесс cron (планировщик заданий), созданный Кеном Томпсоном в 1975 году. Название cron происходит от греческого «chronos» (время). Позднее появились sendmail (почтовый сервер, 1981), inetd (суперсервер для сетевых служб, 1985) и другие.
В современных Unix-системах (Linux, BSD, macOS) демоны управляются системой инициализации — init, systemd или launchd. Традиционно демоны запускаются через init-скрипты, но с 2010-х годов в большинстве дистрибутивов Linux используется systemd, который вводит собственный формат юнитов и служб.
¶Характеристики
Классический демон обладает следующими признаками:
- Отсутствие терминала: демон не связан ни с одним управляющим терминалом, что исключает взаимодействие с пользователем через стандартный ввод-вывод.
- Родительский процесс —
init(PID 1): демон, как правило, становится сиротой и усыновляется процессомinit(илиsystemd), что гарантирует его независимость от сеанса пользователя. - Работа в фоне: демон не блокирует выполнение других процессов и не выводит данные на экран; его вывод направляется в системный журнал или файлы логов.
- Длительное время работы: демоны рассчитаны на непрерывную работу в течение длительного времени, вплоть до перезагрузки системы.
¶Процесс демонизации
Превращение обычного процесса в демона (демонизация) включает несколько стандартных шагов, выполняемых программным кодом:
- Вызов
fork(), после которого родительский процесс завершается, а дочерний продолжает работу. - Вызов
setsid()для создания нового сеанса и освобождения от управляющего терминала. - Повторный вызов
fork(), чтобы гарантировать, что процесс не станет лидером сеанса и не сможет вновь получить терминал. - Смена текущего каталога на корневой (
/) во избежание блокировки смонтированных файловых систем. - Установка маски прав доступа
umask(0)для контроля создаваемых файлов. - Закрытие файловых дескрипторов стандартного ввода, вывода и ошибок, либо их перенаправление в
/dev/nullили файл журнала.
В современных системах с systemd демонизация часто не требуется: службы запускаются напрямую, а systemd сам управляет их состоянием, стандартными потоками и журналированием.
¶Классификация
Демоны можно разделить по функциональному назначению:
- Сетевые службы:
sshd(удалённый доступ),httpd(веб-сервер),named(DNS-сервер),smbd(файловый сервер SMB). - Системные службы:
syslogd(системный журнал),crond(планировщик),udevd(управление устройствами),dbus-daemon(шина межпроцессного взаимодействия). - Службы печати и графики:
cupsd(печать),Xorg(графический сервер). - Пользовательские демоны: запускаются от имени обычного пользователя для выполнения фоновых задач (например, синхронизация файлов, загрузка обновлений).
¶Применение
Демоны обеспечивают базовую функциональность Unix-систем. Без них невозможна работа сети, ведение журналов, выполнение запланированных задач, управление питанием и периферийными устройствами. Архитектура «демон — клиент» лежит в основе большинства серверных приложений: клиент отправляет запрос, демон обрабатывает его и возвращает ответ. Такой подход позволяет обслуживать множество клиентов одновременно и обеспечивает изоляцию серверного кода от пользовательского окружения.
В отличие от служб Windows, демоны Unix исторически не имеют единого централизованного менеджера конфигурации; управление ими осуществляется через сигналы, командные утилиты (systemctl, service, kill) и конфигурационные файлы в каталогах /etc и /usr/local/etc.
¶См. также
¶Источники
- Стивенс У. Р., Раго С. А. «UNIX. Профессиональное программирование», 3-е издание, 2014.
- Танейбаум Э., Бос Х. «Современные операционные системы», 4-е издание, 2015.
- Документация проекта systemd (freedesktop.org).
- The Jargon File, статья «daemon».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

