daemon (Демон) — это фоновый процесс, который работает без непосредственного взаимодействия с пользователем. В системах Linux для управления демонами используются различные системы инициализации (init). Наиболее распространёнными являются Systemd, SysVinit и OpenRC. В этом руководстве мы рассмотрим различные способы вывода списка всех запущенных демонов для каждой системы инициализации в Linux.
Прежде чем перейти к теме, позвольте мне вкратце объяснить следующие ключевые термины, поскольку они важны для понимания остальной части руководства.
Если вы хотите управлять службами (например, запускать или останавливать веб-сервер), вам нужно разбираться в демонах и системе инициализации.
Если вы хотите отслеживать или устранять неполадки в своей системе, вам нужно понимать процессы.
Демон — это фоновый процесс, который непрерывно работает в системе Linux, обычно без прямого взаимодействия с пользователем.
Демоны предоставляют важные услуги системе или другим программам. Например:
sshd
управляет SSH-соединениями.cron
планирует задачи.apache2
обслуживает веб-страницы.
Обычно демоны запускаются при загрузке системы и работают до её выключения.
Пример:
Если вы используете веб-сервер, демон apache2
или nginx
работает в фоновом режиме, обрабатывая веб-запросы.
Забавный факт: имена демонов часто оканчиваются на «d» (например,
sshd
,crond
).
Процесс — это любая программа или задача, которая в данный момент выполняется в вашей системе.
Типы процессов:
Вы можете перечислить все процессы, используя команды типа ps
или top
.
ps aux
Вы можете проверить PID конкретного процесса (например, nano) с помощью команды:
ps aux | grep nano
Пример:
Когда вы открываете терминал, запускается процесс bash
. Если вы запускаете команду, например ls
, для выполнения этой команды создаётся новый процесс.
Система инициализации — это первый процесс, который запускается при загрузке системы Linux (с идентификатором процесса 1 или PID 1
). Он управляет всеми остальными процессами и службами в системе.
Система инициализации отвечает за:
Вот некоторые из распространенных систем инициализации:
systemctl
, и journalctl
.service
, /etc/init.d/
.initctl
. В настоящее время она устарела, так как большинство последних дистрибутивов Ubuntu перешли на systemd.
Пример:
При загрузке системы система инициализации запускает основные демоны, такие как sshd
(для SSH) и cron
(для запланированных задач).
Система инициализации запускает демонов (фоновые службы) и управляет ими. Как демоны, так и обычные программы (например, веб-браузер) являются типами процессов. Вы можете перечислить все процессы, используя такие инструменты, как ps
, но вам нужны команды, специфичные для инициализации (например, systemctl
) для управления демонами.
Чтобы проверить вашу систему инициализации, запустите:
ps -pid 1
Пример вывода:
PID TTY TIME CMD 1 ? 00:00:00 systemd
Это означает, что система использует Systemd.
Термин | Определение | Пример |
---|---|---|
Демон | Фоновый процесс, предоставляющий системные службы. | sshd , cron , apache2 . |
Процесс | Любая запущенная программа или задача в системе. | bash , ls , sshd . |
Система инициализации | Первый процесс, который запускается при загрузке и управляет всеми остальными процессами / службами. | systemd , SysVinit , OpenRC , Upstart . |
Как мы уже отмечали, процесс — это любая запущенная программа или задача в вашей системе (например, текстовый редактор, веб-браузер или фоновая служба).
Демон — это особый тип процесса, который работает в фоновом режиме без взаимодействия с пользователем, обычно предоставляя системные услуги (например, обрабатывая сетевые подключения, ведение журналов или планирование задач).
Вот ключевые различия между процессами и демонами:
Особенность | Процесс | Демон |
---|---|---|
Работает в фоновом режиме? | Нет (обычно выполняется на переднем плане) | ДА |
Подключен к терминалу? | Да (при запуске пользователем) | Нет (отсоединен от терминала) |
Пример | firefox , nano , htop | sshd , cron , systemd-journald |
Управляемый | Пользователь или система | Система инициализации (systemd , SysVinit , OpenRC ) |
Хорошо. Надеюсь, теперь вы хорошо понимаете, что такое демоны, процессы и системы инициализации. Теперь давайте научимся выводить список демонов для каждой системы инициализации.
Во-первых, давайте начнем с Systemd.
Systemd использует сервисы для управления демонами. Systemd является системой инициализации по умолчанию во многих современных дистрибутивах Linux, таких как Arch Linux, Debian, Fedora, RHEL и Ubuntu.
Вы можете проверить запущенные службы с помощью:
systemctl list-units --type=service --state=running
Объяснение:
systemctl
→ Основная команда для управления службами в Systemd.list-units
→ Список активных системных блоков.--type=service
→ Фильтрует выходные данные, чтобы показывать только сервисы.--state=running
→ Показывает только запущенные в данный момент службы.
Пример вывода:
UNIT LOAD ACTIVE SUB DESCRIPTION accounts-daemon.service loaded active running Accounts Service avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack bluetooth.service loaded active running Bluetooth service bolt.service loaded active running Thunderbolt system service colord.service loaded active running Manage, Install and Generate Color Profiles cron.service loaded active running Regular background program processing daemon cups-browsed.service loaded active running Make remote CUPS printers available locally [...]
SysVinit использует сценарии инициализации, хранящиеся в /etc/init.d/
. Он используется в более старых версиях дистрибутивов Linux, таких как Debian 7, CentOS 6.
Чтобы составить список запущенных служб:
service --status-all | grep "+"
Объяснение:
service --status-all
→ Содержит список всех служб и их статусов.grep "+"
→ Отфильтровывает только запущенные службы (службы с [ + ]
в выходных данных).
Пример вывода:
[ + ] cron [ + ] networking [ - ] apache2
Здесь cron
и networking
выполняются, в то время как apache2
остановлены.
OpenRC управляет службами с помощью rc-status в некоторых дистрибутивах Linux, таких как Alpine Linux и Gentoo.
Чтобы составить список активных демонов:
rc-status
Пример вывода:
Runlevel: default sshd [ started ] crond [ started ]
Система инициализации | Команда для составления списка запущенных демонов |
---|---|
Systemd | systemctl list-units --type=service --state=running |
СисВинит | service --status-all |
OpenRC | rc-status |
В этой статье мы рассмотрели понятия процессов, демонов и систем инициализации, а также ключевые различия между процессами и демонами, чтобы прояснить их роль в системе Linux.
Мы также рассказали, как выводить список запущенных демонов в разных системах инициализации, таких как Systemd, SysVinit и Upstart, и привели практические примеры.
Мы надеемся, что это руководство было полезным!