Добавить в корзинуПозвонить
Найти в Дзене
Герман Геншин

В шоке? Ваш Linux сейчас под контролем демонов! Кто они такие на самом деле — и как взять их под свой контроль

Если вы хоть раз сталкивались с Linux, слово «демон» вам знакомо. Не стоит пугаться: под этим загадочным именем скрываются фоновые программы, которые отвечают за стабильную работу системы. По сути, это незаметные труженики, поддерживающие жизнь вашего компьютера. Демоны в Linux — это специальные программы, которые работают в фоне и берут на себя разные важные задачи. Например, автоматически запускают задания по расписанию (cron), следят за сетевыми соединениями, чистят файловую систему и многое другое. Кстати, их названия обычно заканчиваются на «-d». Сам термин появился ещё в 60-х: разработчики системы MULTICS позаимствовали его из эксперимента физика Джеймса Кларка Максвелла, где некое воображаемое существо сортирует молекулы. Новый термин понравился программистам — он отлично подошёл для «невидимых» и неустанных помощников операционной системы. Один из создателей системы, Фернандо Корбато, описывал это так: Воображаемый демон Максвелла без устали сортировал молекулы где-то в тени.
Оглавление

В двух словах

Если вы хоть раз сталкивались с Linux, слово «демон» вам знакомо. Не стоит пугаться: под этим загадочным именем скрываются фоновые программы, которые отвечают за стабильную работу системы. По сути, это незаметные труженики, поддерживающие жизнь вашего компьютера.

Что такое демоны в Linux?

Демоны в Linux — это специальные программы, которые работают в фоне и берут на себя разные важные задачи. Например, автоматически запускают задания по расписанию (cron), следят за сетевыми соединениями, чистят файловую систему и многое другое. Кстати, их названия обычно заканчиваются на «-d».

Сам термин появился ещё в 60-х: разработчики системы MULTICS позаимствовали его из эксперимента физика Джеймса Кларка Максвелла, где некое воображаемое существо сортирует молекулы. Новый термин понравился программистам — он отлично подошёл для «невидимых» и неустанных помощников операционной системы.

Один из создателей системы, Фернандо Корбато, описывал это так:

Воображаемый демон Максвелла без устали сортировал молекулы где-то в тени. Мы перенесли этот образ на процессы, которые тоже тихо и незаметно берут на себя всю рутинную работу в системе.

В других ОС их называют «службами» — смысл примерно тот же.

Классический пример демона — crond (произносите «крон-ди»), он выполняет задачи из crontab. Сейчас большинство служб работает через единый механизм — systemd. Самые распространённые демоны: systemd-networkd (отвечает за сеть), systemd-journald (журналирует события), systemd-timesyncd (синхронизирует время) и другие.

Почему вокруг systemd до сих пор бушуют споры?

Прошло уже больше десяти лет с момента появления systemd, но дискуссии не утихают. Почему пользователей так волнует этот вопрос?

В современном Linux работает множество демонов — иногда их десятки и даже сотни, даже на домашнем ПК! Поэтому систему всегда рекомендуют выключать корректно, а не нажатием на кнопку питания. Иначе есть риск потерять несохранённые данные.

Как узнать, какие демоны сейчас работают?

Проверить, какие демоны запущены на вашем Linux, очень просто — для этого есть удобные команды.

Если у вас система с systemd, наберите в терминале команду systemctl. Она выведет список всех сервисов и их статус. Каждый сервис — так называемый «юнит» — это файл с инструкцией: когда и как его запускать, от чего он зависит (похоже на схему работы менеджера пакетов).

-2

Для удобства можно вывести только службы:

-3

В списке вы увидите все сервисы, установленные в системе. Если хотите увидеть только активные и работающие — используйте следующую команду:

-4

Здесь собрана вся важная информация: описание, назначение и текущий статус сервисов. Например, avahi находит и подключает устройства в локальной сети, а NetworkManager управляет сетевыми соединениями. Всё это удобно представлено в таблице, где прямо в колонке description можно понять, за что отвечает каждый демон.

В отличие от диспетчера задач Windows, где нужно вручную гуглить незнакомые процессы, здесь всё ясно и понятно с первого взгляда.

Можно использовать и классическую утилиту: команда ps с ключами aux покажет все работающие процессы — независимо от пользователя (чаще всего от root). Если своего аккаунта ещё нет — самое время его создать и работать без повышенных привилегий.

Выполните команду:

-5

Отличить демон по списку иногда сложно, но часто у него есть окончание -d в имени, а в столбце TTY стоит знак «?», что говорит о запуске без терминала.

-6

Для быстрой наглядности попробуйте top или htop — оба показывают процессы в яркой и удобной таблице.

Как включать или отключать демоны?

Linux рассчитан на опытных пользователей, поэтому здесь вы сами решаете, какие сервисы запускать, а какие — отключить.

Как правило, чтобы добавить новый демон, его просто устанавливают из стандартных репозиториев пакетного менеджера. К примеру, хотите веб-сервер NGINX — на Debian или Ubuntu (с правами администратора) достаточно выполнить:

Что произойдёт дальше, зависит от распределения: в некоторых (например, Debian, Ubuntu) демоны запускаются сами, в других (как Arch Linux) за запуск отвечает пользователь. Через systemctl сервис легко можно включить в любой момент.

Чтобы активировать демон:

Например, чтобы NGINX стартовал при каждой загрузке:

-7

Отключение проходит точно так же:

-8

Перед тем как отключать сервис, обязательно проверьте, для чего он нужен! Если не уверены — лучше оставить всё как есть.

Как запустить или остановить демона здесь и сейчас?

Запустить или остановить демона в Linux можно без перезагрузки — потребуется только доступ администратора (root или sudo). Я рекомендую использовать sudo — безопаснее и удобнее.

В ряде дистрибутивов сервисы стартуют сразу после установки (так сделано в Debian/Ubuntu), в других — нужно включать вручную (пример — Arch Linux).

Иногда бывает нужно вручную запустить демон, если он по каким-то причинам не стартовал или был отключён.

Чтобы включить, например, NGINX, используйте команду:

Если нужно остановить сервис — достаточно выполнить:

Учтите: такие действия действуют только до перезагрузки. Чтобы изменить автозапуск навсегда, используйте enable/disable — как описано выше.

Иногда требуется именно перезапуск демона — например, после изменения конфигов или установки обновлений. Это можно сделать двумя командами (stop и start), но проще — одной restart:

После редактирования настроек NGINX запустить его обновлённый вариант можно так:

Почему я теперь выбираю дистрибутивы с systemd

Я перестал беспокоиться о systemd — и полюбил его за удобство.

Так легко стало управлять сервисами в современном Linux! Даже несмотря на продолжающиеся споры о «избыточности», systemd упростил жизнь — больше не нужно путаться в сложных симлинках, как это было с SysVInit. Неудивительно, что большинство разработчиков и сисадминов перешли на systemd и обратно — не хотят.

Вначале демоны могут показаться чем-то пугающим, если вы раньше с ними не сталкивались. Но стоит попробовать — и пару простых команд будет достаточно, чтобы вы сами управляли этим таинственным «невидимым миром» вашего Linux. Работа демонов очищает для пользователя все лишние хлопоты — пусть и остаётся почти незаметной!

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в: