Linux — это операционная система с открытым исходным кодом, известная своей гибкостью, стабильностью и обширным набором инструментов для управления процессами и сервисами. Одним из таких инструментов является Systemd, который стал стандартом управления системными сервисами в большинстве современных дистрибутивов Linux. Одним из главных преимуществ Systemd является его способность эффективно управлять запущенными сервисами и системными ресурсами.
В данной статье мы подробно рассмотрим, как с помощью Systemd отображать все запущенные сервисы, управлять ими и контролировать порты, используемые этими сервисами. Мы также обсудим, как использовать Systemd для мониторинга безопасности через брандмауэр.
Что такое системы управления сервисами в Linux?
В Linux управление сервисами — это ключевой аспект администрирования. Важно иметь возможность быстро получать информацию о том, какие сервисы работают, а какие завершили свою работу или отключены. Это нужно при мониторинге производительности системы и для устранения неполадок, если такие будут выявлены.
Ранее администрирование сервисами осуществлялось с помощью init — традиционного процесса инициализации, который отвечал за запуск сервисов при загрузке системы. Однако с внедрением Systemd управление стало более гибким и мощным. Systemd пришёл на смену init и стал стандартом де-факто в большинстве дистрибутивов Linux, таких как Ubuntu, CentOS и Fedora.
Что такое Systemd?
Systemd — системный менеджер инициализации, который управляет процессами и сервисами в Linux. Он был создан для повышения скорости загрузки системы и замены устаревшего init. Systemd выполняет несколько важных функций:
- Инициализация сервисов при запуске системы.
- Управление зависимостями между сервисами.
- Мониторинг состояния сервисов и процессов в системе.
- Журналирование (systemd-journald) всех событий, связанных с сервисами и процессами.
Одним из главных преимуществ Systemd является его совместимость с SysV и поддержка старых скриптов LSB, что позволяет плавно перейти от использования init к более современному управлению сервисами.
Зачем нужно отображать запущенные сервисы?
Знание того, какие сервисы запущены на вашей системе, критично для администрирования. Это позволяет:
- Мониторить использование ресурсов: если сервис потребляет слишком много памяти или процессорных мощностей, это может указывать на проблему.
- Устранять неполадки: в случае сбоев системы можно быстро определить, какой сервис был причиной проблемы.
Оптимизировать производительность: ненужные сервисы можно отключить или настроить их запуск по требованию, что снизит нагрузку на систему.
Отображение всех сервисов в Linux через Systemd
Чтобы отобразить все сервисы, которые активны в системе, можно использовать имеющиеся команды:
systemctl list-units --type=service
Данный способ выведет лист всех системных юнитов типа "сервис", загруженных в систему. Команда показывает как активные, так и завершенные сервисы. Для упрощенного вывода можно использовать сокращенную команду:
systemctl --type=service
Как отобразить активные сервисы в Systemd
Активные сервисы — это те, которые либо продолжают выполняться, либо завершили свою работу, но ещё не выгружены из памяти. Чтобы увидеть список всех активных сервисов, необходимо выполнить следующую команду:
systemctl list-units --type=service --state=active
Для вывода с минимальными параметрами можно использовать альтернативную команду:
systemctl --type=service --state=active
Как отобразить только запущенные сервисы
Запущенные сервисы — это те, которые продолжают выполняться в данный момент. Чтобы отобразить их, используйте следующую команду:
systemctl list-units --type=service --state=running
Альтернативная команда:
systemctl --type=service --state=running
Эти команды помогут системным администраторам быстро получить информацию о том, какие сервисы работают в данный момент.
Ключевые термины в Systemd
- Unit (Юнит) — это базовая единица в Systemd. Юниты могут быть сервисами, устройствами, монтируемыми точками, сокетами и другими объектами, управляемыми системой.
- Load (Загрузка) — статус, указывающий, загружен ли юнит в память.
- Active (Активен) — указывает, активен ли юнит (например, сервис запущен и работает).
- SUB (Подсостояние) — уточнённый статус юнита, который показывает его текущее состояние, например, "running" (выполняется) или "failed" (сбой).
- Description (Описание) — краткая строка, которая описывает цель юнита.
Создание алиаса для команды Systemd
Чтобы упростить вызов команды отображения запущенных сервисов, можно создать алиас. Это особенно полезно, если часто приходится выполнять одну и ту же команду.
Добавьте следующий алиас в файл ~/.bashrc:
alias running_services='systemctl list-units --type=service --state=running'
После добавления этого алиаса обновите текущую сессию командой:
source ~/.bashrc
Теперь вы можете быстро отображать запущенные сервисы, используя команду
running_services.
Определение порта, на котором прослушивает сервис
Чтобы узнать, какой порт использует конкретный сервис, можно использовать следующие команды:
netstat -ltup | grep <имя_процесса>
Альтернативная команда с использованием ss:
ss -ltup | grep <имя_процесса>
Эти команды отобразят все порты, на которых сервисы прослушивают входящие соединения, а также информацию о самих сервисах.
Отображение сервисов и портов, открытых в брандмауэре
Для контроля безопасности системы важно знать, какие сервисы и порты разрешены в брандмауэре. Рассмотрим, как это сделать с использованием разных брандмауэров.
FirewallD
Для отображения разрешенных сервисов:
firewall-cmd --list-services
Для отображения открытых портов:
firewall-cmd --list-ports
UFW
Для отображения статуса UFW и списка разрешенных сервисов и портов:
sudo ufw status
Эти команды помогут вам определить, какие порты и сервисы разрешены для доступа извне через брандмауэр.
Заключение
Управление сервисами — это важная часть администрирования Linux-систем. Systemd предоставляет мощные инструменты для мониторинга и управления сервисами, что делает его незаменимым для современных администраторов. С его помощью можно легко отслеживать активные сервисы, проверять их состояние и оптимизировать использование ресурсов. Более того, Systemd позволяет интегрировать безопасность, отслеживая порты и взаимодействие с брандмауэром, что способствует повышению уровня защиты системы.
Также предлагаем рассмотреть другие полезные статьи: