Демон (программа)
Демон (daemon) — программа, которая выполняет определённые задачи периодически. Само понятие идёт не от привычных рогатых и злобных чертей, а скорее от деймонов, то бишь джиннов — помощников, которые позволяют выполнить некие задачи как бы магическим способом.
Описание[править]
Демоны выполняют системные задачи, обслуживают запросы других программ или пользователей, обеспечивают работу сетевых служб, планировщиков заданий и других инфраструктурных компонентов. Они работают полностью пассивно и требуют только настройки и запуска, дальше в вашей системе потужно жужжит здоровенный такой шмелина, и гудение наполняет благую систему.
Слово daemon было выбрано разработчиками ранних Unix-систем в MIT и Bell Labs. Термин был взят из древнегреческой философии, где даймонами назывались невидимые помощники. На русский язык же это перевили именно как демон, а не даймон, как было бы точнее.
Первые фоновые процессы появились уже в ранних версиях Unix. В Research Unix и ранних BSD-версиях такие процессы запускались вручную или через простые скрипты при загрузке. В более новых системах восрали понятие инициализации. Init стал первым настоящим процессом в системе с PID 1 и отвечал за запуск демонов согласно конфигурационным файлам /etc/inittab, скриптам в /etc/rc.d.
С 2010-х годов в основном применяется systemd, которая полностью заменила традиционный SysV init во многих дистрибутивах Linux.
Суть[править]
Демон не привязан к терминалу. После запуска он отсоединяется от сессии пользователя. Обычно запускается при загрузке системы и работает непрерывно и ждёт событий, на которые властно и потужно реагирует. Демон создаёт новую сессию и становится лидером своей группы процессов, чтобы не получать сигналы от терминала.
stdin, stdout и stderr демона обычно перенаправляются в /dev/null или в лог-файлы. Часто запускаются от имени root или специальных системных пользователей (www-data, postgres и т. д.).