ServerAID
Найти гайд, команду, тег… ⌘ K
Глоссарий  ·  термин

Демон в Linux — что это и зачем

Демон — фоновый процесс без терминала, который работает постоянно: SSH-сервер, веб-сервер, СУБД, cron. Запускается обычно при старте системы и слушает события или соединения. На современной Ubuntu демонами управляет systemd через unit-файлы.

Демон (daemon)

Демон — фоновый процесс без терминала, который работает постоянно: SSH-сервер, веб-сервер, СУБД, cron. Запускается обычно при старте системы и слушает события или соединения. На современной Ubuntu демонами управляет systemd через unit-файлы.

Что это в одном абзаце

Когда вы запускаете программу из шелла, она привязана к терминалу: закрыли SSH-сессию — программа умирает. Демон работает иначе: он отделён от терминала, ждёт событий (входящие соединения, время по cron, сигналы) и работает столько, сколько живёт сам сервер. Имена многих демонов оканчиваются на d: sshd, httpd, crond, systemd — это конвенция, которая помогает в ps и top отличать их от пользовательских команд.

ps aux | grep -E '(sshd|nginx|postgres|cron)' | head

Откуда название

Слово «daemon» — отсылка к концепции древнегреческого daemon: невидимое существо, которое незаметно работает на фоне. Термин закрепил Project MAC в MIT в 1960-х. К дьяволу отношения не имеет, хотя по-русски часто пишут «демон» — и это уже устоявшийся технический термин.

Чем демон отличается от обычного процесса

Канонический демон UNIX-стиля делает три вещи при запуске (это называется «daemonization»):

  1. fork() и завершение родителя. Программа порождает дочерний процесс и сразу выходит — в шелле создаётся впечатление, что команда отработала, но дочерний процесс продолжает жить.
  2. setsid() — отделяется от управляющего терминала. Теперь сигнал SIGHUP при закрытии SSH-сессии его не убьёт.
  3. Перенаправление stdin/stdout/stderr в /dev/null и логирование в syslog или собственный файл.

В современном systemd-мире эту работу за вас делает менеджер сервисов: вы пишете обычную программу, которая просто работает в foreground, а systemd сам запускает её в фоне, ведёт логи и перезапускает при падении. Это называется «new-style daemon» (Type=simple) — рекомендованный паттерн для нового софта.

Где живут демоны

Бинарники классических системных демонов лежат в:

  • /usr/sbin/ — большинство системных демонов: sshd, cron, nginx. Префикс s означает «system» — обычным пользователям эти команды напрямую не нужны.
  • /usr/bin/ — реже, для демонов, которые могут запускаться и обычным пользователем.
  • /usr/lib/systemd/systemd — сам PID 1.

Конфигурация — в /etc/<имя_демона>/:

  • /etc/ssh/sshd_config
  • /etc/nginx/
  • /etc/postgresql/<version>/main/

Логи в современной Ubuntu — через journald: journalctl -u <service>. Старые демоны могут писать ещё и в /var/log/<имя>.log.

Как Ubuntu запускает демоны

Сейчас стандарт — systemd. При загрузке системы PID 1 (systemd) читает unit-файлы из:

  • /lib/systemd/system/ — поставляемые с пакетами Ubuntu.
  • /etc/systemd/system/ — ваши собственные или переопределения.

И запускает все демоны, у которых стоит автозагрузка (systemctl enable). Посмотреть запущенные:

systemctl list-units --type=service --state=running

До systemd демонами управлял SysV init через скрипты в /etc/init.d/<service>. Эти скрипты делали всю «daemonization»-работу руками: форкались, отделялись, писали PID-файл, перенаправляли потоки. systemd сделал это ненужным.

Подробно про управление демонами — в термине systemd и в практическом гайде systemctl enable и unit-файлы.

Типичные демоны Ubuntu

Что вы найдёте на свежем Ubuntu Server 24.04:

  • systemd — менеджер сервисов с PID 1.
  • systemd-journald — сборщик логов.
  • systemd-resolved — локальный DNS-резолвер.
  • systemd-timesyncd — синхронизация времени по NTP.
  • sshd — SSH-сервер для входящих подключений.
  • cron — планировщик задач (постепенно вытесняется systemd-таймерами).
  • rsyslog — традиционный сборщик логов (часто работает параллельно с journald).
  • dbus-daemon — шина сообщений между процессами.
  • udevd — менеджер устройств (горячее подключение).

После установки веб-стека добавятся:

  • nginx или apache2, php-fpm.
  • postgresql или mysqld / mariadbd.
  • dockerd + containerd при установке Docker.

Частые вопросы

Что такое демон в Linux простыми словами

Программа, которая работает на сервере в фоне, без окна и терминала, и обычно стартует автоматически при загрузке. Примеры: SSH-сервер, который ждёт входящих подключений; веб-сервер, обрабатывающий запросы; СУБД, обслуживающая клиентов. Сам пользователь напрямую с демоном не общается — общается клиент (SSH-клиент, браузер, psql).

Чем демон отличается от службы (service)

В мире Linux это часто синонимы. Технически «демон» — UNIX-термин про процесс с отделённым tty, «служба» (service) — Windows/systemd-термин про управляемую единицу. Когда говорят «systemd service», обычно имеют в виду демона, обёрнутого в unit-файл.

Зачем демон отделяется от терминала

Чтобы переживать закрытие сессии. Если бы sshd был привязан к терминалу администратора, который его запустил, при логауте админа SSH-демон умер бы — и сервер стал недоступен извне. Отсоединение через setsid() (или systemd-обёртку) делает процесс независимым от чьей-либо сессии.

Как посмотреть всех демонов на Ubuntu

systemctl list-units --type=service --state=running — все активные сервисы. ps -eo pid,user,cmd --forest — дерево процессов; демоны увидите как ветви от systemd (PID 1). Старый способ через pstree -p тоже работает.

Как создать свой демон

Простейший путь на современной Ubuntu: написать обычную программу в foreground, рядом положить unit-файл [Service] ExecStart=... Restart=always, и sudo systemctl enable --now. systemd сам запустит её в фоне, перенаправит вывод в journald и будет перезапускать при падении. Подробно — в гайде по systemctl и systemd unit.

Что почитать

Похожие материалы

grep — что это и зачем
Глоссарий

grep — что это и зачем

grep — стандартная команда Linux для поиска строк по шаблону внутри текстовых файлов и потоков. Берёт текст на вход, отдаёт строки, в которых нашлось совпадение. Базовый инструмент работы с логами, конфигами, выводом других команд через пайп.

Редакция
find — что это и зачем
Глоссарий

find — что это и зачем

find — стандартная команда Linux для поиска файлов и каталогов по имени, типу, правам, размеру, дате и десяткам других критериев. С помощью `-exec` поверх найденного можно сразу выполнять команды. Универсальный инструмент админа для массовой работы с файловой системой.

Редакция
snap — что это и зачем
Глоссарий

snap — что это и зачем

snap — система упаковки и установки приложений от Canonical, разработанная как альтернатива apt. Каждый snap — самодостаточный пакет со своими зависимостями, изолированный от системы через AppArmor. Используется на Ubuntu для Firefox, Chromium, microk8s и многих desktop-приложений.

Редакция
LVM — что это и зачем
Глоссарий

LVM — что это и зачем

LVM — слой абстракции между физическими дисками и файловыми системами в Linux. Объединяет диски в пулы (Volume Groups), нарезает их на логические тома (Logical Volumes) и позволяет изменять размер на лету. Альтернатива классическому partitioning, которая делает работу с дисками гибкой.

Редакция