Background-процесс (фоновый процесс, daemon) — программа, запущенная в операционной системе без интерактивного взаимодействия с пользователем. Не привязан к терминальной сессии, не имеет управляющего терминала (контролирующего TTY) и продолжает работу после выхода пользователя из системы. На типичном Linux-сервере одновременно работают десятки фоновых процессов: веб-сервер, интерпретатор PHP, СУБД, SSH-сервер, планировщик задач.
Как работает
В Unix/Linux демоны создаются через daemonization — процесс отсоединения от управляющего терминала. Классический метод: процесс вызывает fork() (создаёт дочерний процесс), родительский завершается, дочерний вызывает setsid() (создаёт новую сессию без управляющего терминала) и переходит в корневую директорию. Современные демоны используют systemd, который управляет всем жизненным циклом.
systemd (System and Service Manager) — менеджер служб Linux, запускается как первый процесс с PID 1 при старте системы. Управляет фоновыми процессами через unit-файлы (/etc/systemd/system/). Ключевые команды: systemctl start/stop/restart/status имя, systemctl enable имя (запуск при старте системы), journalctl -u имя (просмотр логов). При сбое службы systemd перезапускает её согласно политике Restart (always, on-failure).
Запуск процесса в фоне вручную: команда & — запускает в фоне текущей сессии (завершится с выходом пользователя), nohup команда & — защита от HUP-сигнала при выходе, screen или tmux — мультиплексоры терминала с сохранением сессии. Для production лучше оформить процесс как systemd-службу.
Cron — планировщик фоновых задач. Демон crond читает crontab-файлы и запускает команды по расписанию. Формат: минута, час, день, месяц, день недели, команда. Пример: 0 2 * * * /opt/backup.sh — запускать скрипт резервного копирования каждую ночь в 2:00. Systemd timer — современная альтернатива cron с лучшим логированием и зависимостями между задачами.
История
Концепция демонов (daemon) появилась в Multics (1960-е) и была унаследована Unix (1969). Название «daemon» выбрали разработчики MIT со ссылкой на духов-помощников из греческой мифологии — незримых посредников, выполняющих задачи в фоне. BSD Unix в 1970-х стандартизировал набор системных демонов (inetd, cron, syslogd). SysV init (AT&T Unix System V, 1983) ввёл скрипты инициализации для управления демонами. Upstart (Ubuntu, 2006) предложил event-based управление службами. systemd создал Леннарт Пёттеринг в 2010 году; к 2015-му стал стандартом для большинства дистрибутивов Linux.
Типы фоновых процессов в хостинге
- Веб-сервер (nginx, Apache) — принимает HTTP-запросы.
- PHP-FPM — пул PHP-воркеров для обработки запросов.
- СУБД (MySQL, PostgreSQL) — база данных.
- Воркеры очередей (Laravel Queue Worker, Celery, Sidekiq) — обрабатывают задачи из очереди.
- Cron-задания — бэкапы, генерация ситемапов, очистка кеша по расписанию.
- Агенты мониторинга (Prometheus Node Exporter, Metricbeat) — собирают метрики.
На что обращать внимание
Фоновые процессы потребляют ресурсы VPS, даже когда простаивают. Проверяйте список процессов через ps aux или htop и выключайте неиспользуемые службы (systemctl disable --now служба). Настройте ограничения ресурсов для критичных служб через systemd resource control: параметр MemoryMax предотвращает утечку памяти одним процессом от остановки всего сервера. Используйте systemctl enable для автозапуска служб после ребута.
Фоновые процессы запускаются через systemd-сервисы или таймеры. Redis используется как брокер для очередей задач. Celery (Python) и Sidekiq (Ruby) управляют фоновыми задачами. Мониторинг через Netdata. Логирование через ELK Stack.