Как работают службы и демоны Linux (и как ими управлять)

14.07.2025
Как работают службы и демоны Linux (и как ими управлять)

Приступая к работе с Linux, вы можете часто сталкиваться с терминами services «службы» и daemons «демоны», которые обозначают фоновые процессы, играющие ключевую роль в обеспечении бесперебойной работы системы, зачастую без непосредственного участия пользователя.

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

 

Что такое службы и демоны в Linux?

Давайте разберёмся, что это такое, чем они отличаются и почему это важно.

Что такое демон?

Демон (произносится как DEE-muhn) — это фоновый процесс, который запускается автоматически или работает в фоновом режиме без какого-либо взаимодействия с пользователем. Его задача — ждать определённых системных событий или спокойно и последовательно выполнять рутинные задачи.

Представьте себе демона как постоянно работающего персонального помощника, который не нуждается в контроле.

Вот несколько распространённых примеров:

  • sshd — Выполняет удаленный вход по SSH через сеть.
  • httpd — Управляет вашим веб-сервером, предоставляя доступ к веб-сайтам и API.
  • crond — Управляет запланированными задачами (например, автоматическим резервным копированием или сценариями обслуживания).

 

По соглашению большинство демонов в Linux заканчиваются на букву d, которая означает «демон».

 

Что такое Услуга?

Хотя термин «демон» относится конкретно к фоновому процессу, в Linux термин «служба» имеет более широкое значение.

Сервис — это управляемый фоновый процесс, который может работать непрерывно, как демон, или запускаться по требованию. Сервисы предоставляют такие функции, как работа в сети, печать, ведение журналов, брандмауэры и многое другое.

Услуги могут:

  • Запускается автоматически при загрузке.
  • Пользователь может запустить или остановить его вручную.
  • Запускайте постоянно или только при необходимости.

 

Итак, вот главный вывод:

Все демоны — это сервисы, но не все сервисы — демоны.

 

Например:

  • Такой демон, как sshd, работает постоянно, ожидая подключений.
  • Но такая служба, как Bluetooth-сканер, может запускаться только при обнаружении Bluetooth-устройства, то есть она работает по событию и не всегда активна.

 

Некоторые сервисы работают временно: они запускаются, выполняют задачу и останавливаются.

  • Например, systemd-resolved, который обрабатывает DNS-запросы на лету.
  • Или atd, который запускает одноразовые запланированные задания, а затем завершает работу.

 

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

 

Как Linux управляет сервисами: systemd и другие

Когда дело доходит до управления службами в современных системах Linux, systemd играет ведущую роль, выступая в качестве системы инициализации, то есть первого процесса, запускаемого при загрузке системы, которому всегда присваивается PID 1.

После запуска systemd берет на себя управление всеми остальными службами и демонами в системе. Большинство популярных дистрибутивов Linux, таких как UbuntuFedoraDebianCentOS и Arch Linux, используют systemd в качестве системы инициализации по умолчанию благодаря ее скорости, эффективности и широкому набору функций.

Вы взаимодействуете с systemd в основном через команду systemctl, которая предоставляет вам полный контроль над службами, такими как запуск, остановка, включение, отключение, проверка состояния и многое другое.

Хотя systemd является текущим стандартом, стоит отметить, что существуют и другие системы инициализации, с которыми вы можете столкнуться, особенно в старых или специализированных дистрибутивах.

  • SysVinit — это традиционная система инициализации, использовавшаяся в старых версиях Linux. Она отличалась более простым подходом, который заключался в запуске скриптов в /etc/init.d.
  • Upstart, который когда-то использовался в Ubuntu, был призван улучшить SysVinit за счёт возможностей, основанных на событиях, но в значительной степени был заменён.
  • Другой вариант, который всё ещё используется, — OpenRC, лёгкая и простая система инициализации, используемая в таких дистрибутивах, как Alpine Linux и Gentoo.

 

Тем не менее в этом руководстве мы будем говорить исключительно о systemd, поскольку именно с этим вы, скорее всего, столкнётесь в реальных средах Linux.

 

Управление сервисами с помощью systemctl

Команда systemctl — это основной инструмент для взаимодействия со службами в системе Linux на базе systemd. Вот наиболее распространённые задачи, которые вам нужно знать.

Чтобы проверить состояние службы, используйте следующую команду. Она покажет текущее состояние службы: активна, неактивна, не работает или работает.

sudo systemctl status sshd

 

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

sudo systemctl start sshd

 

Чтобы остановить службу, просто запустите:

sudo systemctl stop sshd

 

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

sudo systemctl restart sshd

 

Чтобы служба запускалась при загрузке, используйте следующую команду:

sudo systemctl enable sshd

 

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

sudo systemctl disable sshd

 

Чтобы просмотреть список всех активных в данный момент служб, выполните команду:

systemctl list-units --type=service

 

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

systemctl list-unit-files --type=service

 

Бонус: использование ps, top и htop для просмотра демонов

Хотя такие инструменты, как systemctl, отлично подходят для управления сервисами, иногда полезно посмотреть, что происходит на уровне процессов. Это может быть особенно полезно, когда нужно убедиться, что демон запущен, проверить использование ресурсов или устранить проблемы с производительностью.

Для начала команда ps выводит список всех запущенных процессов.

ps aux

 

Если вы ищете конкретный демон, вы можете объединить ps с grep для фильтрации результатов.

ps aux | grep sshd

 

Эта команда поможет вам быстро определить, запущен ли демон SSH и каково его текущее состояние.

ravi 17554 0.0 0.0 9144 2176 pts/0 S+ 10:56 0:00 grep --color=auto sshd

 

Чтобы в режиме реального времени видеть, что происходит в вашей системе, вы можете использовать top, который по умолчанию входит в состав почти каждого дистрибутива Linux.

top

 

Если вам нужно что-то более удобное и красочное, попробуйте htop — более продвинутую альтернативу top. В отличие от tophtop позволяет легко прокручивать, фильтровать и сортировать процессы с помощью клавиш со стрелками и функциональных клавиш.

Возможно, вам потребуется сначала установить его:

sudo apt install htop # для Debian/Ubuntu
sudo yum install htop # для CentOS/RHEL
sudo dnf install htop # для Fedora

 

После установки запустите htop и получите гораздо более удобный способ проверки того, что происходит «под капотом».

 

Заключительные мысли

Службы и демоны лежат в основе любой функционирующей системы Linux, поскольку они выполняют критически важные фоновые задачи, такие как управление SSH-подключениями, планирование заданий, обслуживание веб-контента, синхронизация системного времени и применение правил брандмауэра.

Эти компоненты незаметно работают в фоновом режиме, обеспечивая эффективную и надёжную работу системы. Понимание того, как они функционируют и как ими эффективно управлять, является ключевым фактором для освоения системного администрирования Linux.

Как только вы поймёте, как эффективно управлять сервисами и демонами, вы будете гораздо увереннее ориентироваться в системе Linux и управлять ею.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала